簡體   English   中英

如何立即停止在Java.util.Timer類中安排的任務

[英]How to stop immediately the task scheduled in Java.util.Timer class

我嘗試了一切。 這也是如何停止在Java.util.Timer類中安排的任務

我有一個實現java.util.TimerTask的任務

我用兩種方式稱呼該任務:

  1. 我這樣安排計時器:

    timer.schedule(timerTask,60 * 1000);

  2. 有時我需要立即啟動該工作,並且如果有正在運行的工作,則必須取消timerTask

    cancelCurrentWork(); timer.schedule(timerTask,0);

此實現不會停止當前的工作:(文檔說:如果在調用發生時任務正在運行,則該任務將運行到完成,但將不再運行)

但是我需要它停止。

public static void cancelCurrentwork() {
 if (timerTask!= null) {
  timerTask.cancel();
 }
}

該實現只是取消了計時器,但使當前正在執行的任務得以完成。

public static void cancelCurrentwork() {
 if (timer!= null) {
  timer.cancel();
 }
}

計時器中是否有辦法停止當前正在執行的任務,例如Thread.kill()之類的東西? 當我需要停止該任務時,我希望它失去所有數據。

計時器無法在其軌道上停止任務。

您將需要在正在運行的任務本身中有一個單獨的機制,該機制檢查它是否應該繼續運行。 例如,您可以具有一個AtomicBoolean keepRunning變量,當您希望任務終止時將其設置為false。

如果您的計時器正在使用某種文件/套接字等,則可以從計時器外部關閉該對象,計時器任務將引發異常,您可以使用它來停止計時器。

但通常,您需要某種毒葯才能成功停止單獨的線程/計時器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM