package my;import java.util.Timer;public class TimeTaskDemo { /**
 * @param args
 */
public static void main(String[] args) {
Timer t=new Timer();
t.schedule(new MyTimeTask(), 5000);
}
}package my;import java.io.IOException;
import java.util.TimerTask;public class MyTimeTask extends TimerTask { @Override
public void run() {
System.out.println("abc");
}}
1.为什么主程序不能结束。
2.在Timer(boolean isDaemon) 构造函数中有这么一句话,其中的相关线程指的是什么线程。Timer类也没有继承多线程啊
Timer(boolean isDaemon) 
          Creates a new timer whose associated thread may be specified to run as a daemon.

解决方案 »

  1.   

    对 Timer 对象最后的引用完成后,并且所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止,并且成为垃圾回收的对象,但是这可能要很长时间后才发生。Timer(true),表示创建的定时器将作为守护进程去运行,和main主线程运行没有任何关系
    不作为守护进程去运行,
    new Timer().schedule(new TimerTask() {  @Override
      public void run() {
       throw new RuntimeException();
      }

     }, 1000);

    System.out.println("main thread over!");主线程也会停止运行的。