当TimerTask实例通过schedule方法使用之后,不能通过schedule方法调用第二次,如果重复使用就会抛异常TimerTask is scheduled already。
当你重新想利用这个timertask时,那么你只能重新获得一个实例,最好是写成类:
1 class MyTimerTask extends TimerTask{ 2 @Override 3 public void run(){ 4 // TODO Auto-generated method stub 5 //do something 6 } 7 };
如果你再次使用TimerTask时,你可以这么做:
1 task = new MyTask(); 2 timer.schedule(task, 1000);
对于这种只使用一次的timer,可以在使用完成之后停止它,新建一个timer意味着新建一个线程,不用了就销毁吧。
1 timer.cancel(); 2 timer.purge(); 3 timer= null;
每一次使用的时候
1 timer = new Timer();
在重新new task之前,最好调用
task.cancel(); //将原任务从队列中移除
task.cancel();
时间: 2024-10-23 11:28:20