关于错误【java.lang.IllegalStateException: Timer already cancelled】

一个TimerTask 经过schedule方法使用以后,不能经过schedule方法调用第二次,想重复使用是不行的,是一次性用品。ide

当你从新想利用这个timertask时,那么你只能从新得到一个实例,最好是写成类:.net

  1. class MyTask 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意味着新建一个线程,不用了就销毁吧。get

  1. timer.cancel();  
  2. timer.purge();  
  3. timer   = null;  

每一次使用的时候class

  1. timer   = new Timer();  

固然你也能够让这个timer一直存在
那么在从新new task以前,最好调用方法

  1. task.cancel();  
相关文章
相关标签/搜索