一个简单的计时器:
# do something ……
long time = 1 * 1 * 1000L;
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("开始计划任务。");
}
}, time);
开始计时后,过来1秒钟会开始计划任务。但是计划任务结束后会发现,其实程序还有还没有停止,如下eclipse的控制台还是会显示还在运行状态。
通过打断点,发现计划任务执行结束后,计时器的线程没有结束(本来应该已经结束了的)。
再次调试,发现又挂起了新的线程:
在计时器结束后,我们需要通过public void cancel()
来取消这个线程,不然它会一直挂起。如果需要在外面终止计时器,也可以schedule()
方法外面调用这个方法。
# do something ……
long time = 1 * 1 * 1000L;
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("开始计划任务。");
timer.cancel();
}
}, time);
参考: