簡體   English   中英

帶有任務鏈關閉的 ExecutorService

[英]ExecutorService with Task chain shutdown

我有一個執行任務的ExecutorService ,它本身向 ExecutorService 提交新任務。

當我調用.shutdown() ,我希望正在運行的任務仍然能夠向需要完成的 ExecutorService 提交新任務。 但我不希望能夠從外部向ExecutorService提交新任務。

ExecutorService關閉時,如何仍然允許任務提交子任務?

調用shutdown后,不應該再提交任何新任務,這不符合邏輯。
對內部任務使用不同的執行程序服務。 或者為自己創建一個執行程序(包裝或擴展您選擇的執行程序),它能夠檢查提交者並根據其狀態允許或不允許任務提交。

看看ForkJoinPool ,它也是一個ExecutorService 在 ForkJoinTasks 中,您可以調用ForkJoinPool.fork()而不是標准的execute() 關閉時,仍然允許使用 fork(),而不允許使用 execute()。 但是,由於行為上的各種其他差異, ForkJoinPool可能不適合手頭的任務(多個隊列而不是一個隊列、工作竊取等)。請查看此處的文檔: http : //docs.oracle。 com/javase/7/docs/api/java/util/concurrent/ForkJoinPool.html

暫無
暫無

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

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