java中自带的定时器有Timer和TimerTask,但是运行起来要结束任务用cancel方法可以结束该任务,此时Timer线程还在运行,程序并没有退出,那么怎么结束Timer呢?
示例代码如下
public class Test {public static void main(String[] args) {Timer timer = new Timer();TimerTask timerTask = new MyTimerTask();TimerTask timerTask2 = new MyTimerTask2();Date now = new Date();timer.scheduleAtFixedRate(timerTask, now, 3 * 1000L);timer.scheduleAtFixedRate(timerTask2, now, 3 * 1000L);System.out.println("主线程先结束了!!");}
}
public class MyTimerTask extends TimerTask{private int count = 0;@Overridepublic void run() {System.out.println("MyTimerTask计数:" + count);if(++count > 5) {System.out.println("MyTimerTask 结束了!!");System.gc();cancel();}}
}
public class MyTimerTask2 extends TimerTask{private int count = 0;@Overridepublic void run() {System.out.println("MyTimerTask2计数:" + count);if(++count > 2) {System.out.println("MyTimerTask2 结束了!!");System.gc();cancel();}}
}
运行test结果如下
当注释掉两个System.gc()后,结果如下
当注释掉两个cancel()后,结果如下