2011-11-24 33 views
3

我的應用程序中的一組任務(功能不同)需要異步執行,並且可能會被合併。確定ThreadPoolTask​​Executor的配置

看起來像Spring的ThreadPoolTaskExecutor是我可以用來從框架本身獲得這樣的執行者(而不是自己創建它)。但是,我不確定如何確定執行程序的最佳配置,即「最大池大小」,「隊列容量」等設置。做出這個決定時需要考慮什麼以及哪些設置效果最好?

回答

3

我建議您高度重視javadoc of ThreadPoolExecutor,因爲如果您想避免出現問題,這樣的池關於排隊的行爲就很重要。 JDK有Executors,它提供了應該給你正確配置池的工廠方法。使用這些方法,或挖掘其源代碼來了解哪些參數(大小,隊列類型等)用於這些配置。

+1

我的確經歷了相關的javadoc,但那些只是解釋了這些配置的含義。他們不告訴何時以及如何使用/調整,這就是我正在尋找的東西。 – Saket

+0

設置取決於您提交的任務類型(IO綁定,CPU綁定),您希望的目標(最小延遲,最大CPU使用率?),處理器數量,應用程序中的其他線程,等等。我建議你在實踐中閱讀Java併發性,其中有關於這些考慮的全部章節。 –

相關問題