關於錯誤【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();  
相關文章
相關標籤/搜索