我有一個問題,一直在推動我瘋了一段時間,我需要諮詢你的集體智慧。RejectedExecutionException即使當ExecutorService由isShutdown()保護時()
我有一個ThreadPoolExecutor,其池的值爲1,從Executors.newFixedThreadPool調用。我使用!isShutdown()來保護所有executor.execute(),因爲executor.shutdown()是從另一個線程調用的,所以應該能夠說執行程序不會拋出RejectedExecutionException。不過,這是我隨機看到的。
有沒有人有一個好主意,爲什麼我看到這種行爲?
從javadocs,newFixedThreadPool創建一個線程池,它重用固定數量的線程,在共享的無界隊列中運行,因此它永遠不會有這個問題。 – Hwee
我的不好。我錯過了你使用固定線程池。我能想到的其他事情是當線程池在檢查之後但在任務提交之前被標記爲關閉時的一些併發問題。可能你可以同步? –
這似乎是唯一的解釋,不是嗎?感謝您的建議:) – Hwee