我正在重新交付系統中工作。這個系統試圖執行一個動作,如果動作失敗,它會嘗試以5分鐘的間隔再次執行兩次,所以我使用ExecutorService
實現來執行第一次執行,並使用ScheduledExecutorService
來調度其他動作,具體取決於其結果(失敗)。如何找出我在並行執行上下文中需要的N個線程?
我該如何計算出我需要的線程數?在這一刻,我只使用單線程模型(由方法創建)
我正在重新交付系統中工作。這個系統試圖執行一個動作,如果動作失敗,它會嘗試以5分鐘的間隔再次執行兩次,所以我使用ExecutorService
實現來執行第一次執行,並使用ScheduledExecutorService
來調度其他動作,具體取決於其結果(失敗)。如何找出我在並行執行上下文中需要的N個線程?
我該如何計算出我需要的線程數?在這一刻,我只使用單線程模型(由方法創建)
不知道有關係統負載的詳細信息,它正在使用的環境以及處理一條消息需要多長時間,因此很難說出您需要的線程數。但是,你能想到的以下基本原則:
x64
上,每個線程通常爲1MB
。我可能會創建2個線程池(一個預定的,一個非預定的)用於發送和重新傳送,並在2到10的高負載不同線程數下測試它們,以查看哪個數字最適合。
您應該只需要一個線程,因爲一次只有一個動作正在運行。你可以使用CachedThreadPool而不用擔心它。