[英]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.