我有大量的異步任務並行運行。所有的任務可以分爲兩種類型,一種是A型(耗時),另一種是B型(執行速度更快,執行速度更快)。 帶有一個具有x池大小的ScheduledThreadPoolExecutor,最終在某個時刻,所有線程都忙於執行類型A,因爲結果類型B被阻塞和延遲。 我試圖完成的是運行類型A任務並行類型B,並且我想在這兩個類型中的任務在其組中執行並行運行的性能。運行ScheduledThreadPoolExecutor的兩個實例
您是否認爲謹慎使用ScheduledThreadPoolExecutor爲類型A和B完全使用自己的線程池?你看到這個方法有什麼問題嗎?
聽起來不錯。在關於您選擇使用Executor util與ScheduledThreadPoolExecutor等實現的安全說明中。任何具體原因?你還有什麼JobThreadFactory類做。 (想知道這是否應該是一個安全Qs?) – TechJack 2012-01-13 03:48:04
我使用java.util.concurrent.Executors工廠方法,因爲這些方法將我從具體的ExecutorService實現的複雜構造函數中屏蔽掉了。例如,newSingleThreadExecutor工廠方法調用6參數ThreadPoolExecutor構造函數...這樣做的缺點是,您無法控制用於存放等待執行的任務的隊列impl,這可能導致一些內存泄漏等(如果任務執行速度慢於提交執行)。工廠可以用來命名線程(就像我這樣做),記錄任務exec開始,結束等等... – Svilen 2012-01-13 07:26:27