簡體   English   中英

JAVA - 取消ThreadPoolExecutor運行任務

[英]JAVA - Cancel the ThreadPoolExecutor running tasks

我需要的是一個類似於shutdownNow的方法,但是,之后能夠提交新的任務。 我的ThreadPoolExecutor將在程序執行期間接受隨機數量的任務。

您可以獲取每個提交的Future,將Future存儲在集合中,然后當您想要取消任務時,調用所有排隊任務的future.cancel()。

使用此解決方案,Exectuor仍在運行,任何正在運行的任務都會被取消,或者如果它們排隊,則不會運行。

為什么不創建表現出這種行為的自己的ExecutorService

看看getQueue()方法。 我很確定清除它會起作用(但不測試)。

僅僅執行getQueue()並清除它是不夠的? 如果您確實需要嘗試停止運行任務,則需要繼承ThreadPoolExecutor並實質上重新實現shutdownNow(),但只復制向每個線程發送中斷的位。 請注意,這仍然不能保證您實際上會立即停止並且不做進一步的計算。 如果你需要這樣做,你需要一個完全不同的方法。

暫無
暫無

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

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