2015-05-14 25 views
0

停止一個TimerTask我已經實現了在Java中一個TimerTask,我需要在一段時間後停止線程:如何在Java中

 .... 
     timer = new Timer(); // At this line a new Thread will be created 

     TimerTask timerTask = new TimerTask() { 

      int tweetCounter = 0; 
      String message; 

      @Override 
      public void run() { 
       try { 
        while ((message = reader.readLine()) != null && (tweetCounter < 100)) { 
         bucket.add(message); 
         tweetCounter++; 

         out.println("Number of messages: " + tweetCounter); 
         out.println("Nano Time: " + System.nanoTime()); 

        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     timer.schedule(timerTask, 30000); 
     ...... 

在這一點上我嘗試:

timerTask.cancel(); 
    timer.cancel(); 
    timer.purge(); 

之後沒有任何反應,程序也不會退出。 如何停止TimerTask線程?

回答

1
timer.cancel(); 
timer.purge(); 

將工作。

int java.util.Timer.purge()

刪除從任務隊列中所有已取消的任務。如果任務中沒有其他 引用,則在此調用之後,它們可以自由地被垃圾收集爲 。

返回:從任務 隊列中刪除的取消任務數。

+0

它仍然繼續運行... –