A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江南 黑马帝   /  2012-6-11 01:27  /  1400 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在看张老师的视频教程中经常遇到这种问题
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;这句也理解不了
也许对于高手来说这些问题都很容易 但是相信对于我或者跟我一样的初学者来说 经常遇到这种问题 例如多线程同步中也有遇到类似的问题,请高手们赐教

1 个回复

正序浏览
装饰模式的思想
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马