2015-04-24 18 views
0

我正在重新交付系統中工作。這個系統試圖執行一個動作,如果動作失敗,它會嘗試以5分鐘的間隔再次執行兩次,所以我使用ExecutorService實現來執行第一次執行,並使用ScheduledExecutorService來調度其他動作,具體取決於其結果(失敗)。如何找出我在並行執行上下文中需要的N個線程?

我該如何計算出我需要的線程數?在這一刻,我只使用單線程模型(由​​方法創建)

回答

0

不知道有關係統負載的詳細信息,它正在使用的環境以及處理一條消息需要多長時間,因此很難說出您需要的線程數。但是,你能想到的以下基本原則:

  1. 有許多線程是壞的,因爲你會花一個上下文切換時間顯著量,飢餓和浪費系統資源的機會較高。
  2. 每個線程爲其堆棧消耗一些內存空間。在x64上,每個線程通常爲1MB

我可能會創建2個線程池(一個預定的,一個非預定的)用於發送和重新傳送,並在2到10的高負載不同線程數下測試它們,以查看哪個數字最適合。

0

您應該只需要一個線程,因爲一次只有一個動作正在運行。你可以使用CachedThreadPool而不用擔心它。

相關問題