[英]How to stop immediately the task scheduled in Java.util.Timer class
我嘗試了一切。 這也是如何停止在Java.util.Timer類中安排的任務
我有一個實現java.util.TimerTask的任務
我用兩種方式稱呼該任務:
我這樣安排計時器:
timer.schedule(timerTask,60 * 1000);
有時我需要立即啟動該工作,並且如果有正在運行的工作,則必須取消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.