黑马程序员技术交流社区

标题: java5线程并发库里面Timer不是很理解 [打印本页]

作者: 江南    时间: 2012-6-11 01:27
标题: java5线程并发库里面Timer不是很理解
在看张老师的视频教程中经常遇到这种问题
import java.util.*;
import javax.management.*;
public class TestTimerTask {
        public static void main(String[] args) {
                class MyTimerTask extends TimerTask
                {
                        private Timer tm=null;
                        public MyTimerTask(Timer tm)
                        {
                                this.tm=tm;
                        }
                        public void run()
                        {
                                try{
                                Runtime.getRuntime().exec("calc.exe");
                                }catch(Exception e)
                                {
                                        e.printStackTrace();
                                }
                                //结束任务线程的代码
                                tm.cancel();
                        }
                }
                Timer tm=new Timer();
                tm.schedule(new MyTimerTask(tm),5000);
        }
}
schedule(TimerTask task,long delay)
我知道在schedule方法中要传递进去一个TimerTask对象
问题1:为什么要定义一个TimerTask的子类呢?为什么这个子类要定义为内部类呢?
问题2:这个TimerTask对象为什么还要传递进去一个Timer对象呢?
问题3:为什么还要在TimerTask子类中定义一个Timer的构造函数呢?而且还要传递进去一个Timer类型的引用变量呢?
问题4:Timer tm=null;这句也理解不了
也许对于高手来说这些问题都很容易 但是相信对于我或者跟我一样的初学者来说 经常遇到这种问题 例如多线程同步中也有遇到类似的问题,请高手们赐教


作者: 吴超    时间: 2012-6-11 21:31
装饰模式的思想




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2