2011-08-23 39 views
6

使用singleton ExecutorService和使用相同線程池的多個CompletionService實例安全嗎?使用單例ExecutorService安全嗎

CompletionService<Object> collector = new ExecutorCompletionService<Object>(threadPool); 

所以,會有多個線程創建像上面那樣的實例,'collector'帶有一個單例threadPool。

+0

我沒有看到任何問題。你有沒有想到可能會導致問題的特殊問題? – toto2

+0

我的膽量感覺說不存在任何問題。但是在使用之前我想確認一下,因爲我找不到這方面的具體文檔。 – ankitjaininfo

回答

5

它會沒事的。 ExecutorCompletionService的每個實例維護其自己的已完成任務的隊列,並僅使用底層的Executor來處理每個任務。

如果完成服務的數量很大且線程池有上限但不會影響結果的正確性,則這些任務可能會相互影響。