我正在爲基於Jersey的Web服務添加一個新端點。支持端點的邏輯需要對另一個服務進行10到50次調用。這些調用是獨立的,可以並行化,所以我正在考慮使用executor服務來將工作分配到多個線程中。我應該在請求中創建executorService還是在整個webapp中共享一個實例?
我想知道是否應該爲每個請求實例化一個executorService,或者是否應該跨Web應用程序共享executorService實例。在後面的例子中,我將如何確定它應該運行的線程數量?
我正在爲基於Jersey的Web服務添加一個新端點。支持端點的邏輯需要對另一個服務進行10到50次調用。這些調用是獨立的,可以並行化,所以我正在考慮使用executor服務來將工作分配到多個線程中。我應該在請求中創建executorService還是在整個webapp中共享一個實例?
我想知道是否應該爲每個請求實例化一個executorService,或者是否應該跨Web應用程序共享executorService實例。在後面的例子中,我將如何確定它應該運行的線程數量?
我想知道如果我應該實例一個ExecutorService每個 請求或應該有橫跨 網絡應用程序共享的ExecutorService實例。在後面的例子中,我將如何確定它應該運行的線程數量 ?
號一般情況下,你不應該實例化executorService
每個Web請求(選項-1),因爲服務器將很快耗盡內存,並且還有飛線程池的創建是昂貴的(費時)。
因此,您需要通過在服務器啓動時創建executorService
的共享實例(選項-2)&根據您的要求配置線程池大小並進行性能測試。
你可以參考here瞭解的線程池。
什麼是落實選項2的最佳方法?共享的ExecutorService在創造它(通過例如)像靜態字段控制器?或者你認爲有更好的方法來共享ExecutionService? – Rahnzo