一个TimerTask 通过schedule方法使用之后,不能通过schedule方法调用第二次,想重复使用是不行的,是一次性用品。
当你重新想利用这个timertask时,那么你只能重新获得一个实例,最好是写成类:
class MyTask extends TimerTask{
@Override
public void run(){
// TODO Auto-generated method stub
//do something
}
};
那么当你向再使用这个TimerTask时,你可以这么做:task = new MyTask();
timer.schedule(task, 1000);
对于这种只使用一次的timer,可以在使用完成之后停止它,新建一个timer意味着新建一个线程,不用了就销毁吧。
timer.cancel();
timer.purge();
timer = null;
每一次使用的时候timer = new Timer();
当然你也可以让这个timer一直存在那么在重新new task之前,最好调用
task.cancel();
本文详细介绍了Java中TimerTask的一次性使用特性。解释了一个TimerTask实例只能被schedule方法调度一次的原因,并提供了如何重复使用的建议。文章还讨论了如何在使用完毕后正确地停止和销毁Timer以避免资源浪费。
40万+

被折叠的 条评论
为什么被折叠?



