考慮一個可以分解成數百個小型,獨立運行的任務的大任務。更具體地說,每個小任務是發送一個輕量級網絡請求並決定從服務器收到的答案。預計這些小任務不會超過一秒,並且總共涉及幾臺服務器。Java執行器:小任務還是大任務?
我想到了兩種使用Executor框架來實現這個功能的方法,我想知道哪一個更好,爲什麼。
- 創建幾個,比如說5到10個任務,每個任務涉及到一堆發送和接收。
- 爲每個發送創建一個任務(Callable或Runnable)&接收並計劃執行程序運行所有這些任務(數百個)。
對不起,如果我的問題顯示我懶惰測試這些,看看自己什麼更好(至少在性能方面)。我的問題在回答這個具體案例的同時,有一個更廣泛的方面。在像這樣的情況下,當你想使用執行器來執行所有的調度和其他任務時,創建大量小任務還是將它們分組爲較少數量的較大任務會更好?
我建議你確保每個任務至少比10-100毫秒長,除非它更簡單,否則可能不會給你帶來太多好處。 –
這取決於「更好」的含義 - 例如,無論您需要吞吐量還是低延遲。也可能取決於您是在單核上還是在8核上運行。 – DNA
你能解釋更多@Peter的評論嗎? – Gray