0

我目前需要創建多個線程池。每個線程池都是一個單線程線程池。 根據條件將任務分配給每個線程池。所以我需要跟蹤線程池。如何創建多個線程池(即多個執行程序,每個線程池都有一個線程)

我該怎麼做? 我可以創建一個線程數組嗎?

ExecutorService executor = Executors.newSingleThreadExecutor(); 

這是我們如何創建1個線程池。現在我想創建5個線程池。

ExecutorService[] executor; 
for(int i=0;i<5;i++){ 
executor[i]= Executors.newSingleThreadExecutor(); 
} 

可以嗎?這是正確的語法?如果不是,你能提出一個辦法嗎?

+5

當然,你可以這樣做。但你爲什麼想要? – shmosel

+0

我需要我的活動由其各自公司訂購。因此,與一家公司有關的所有事件都被髮送到一個線程池。這樣他們將按照我爲特定公司收到的相同順序執行。 – africandrogba

+0

你知道他們發送的順序和他們收到的順序不一定是相同的,對吧? – alfasin

回答

0

在您的情況,我相信這是可能僅使用一個單獨的線程執行器根據文件的時間:

創建一個使用單個worker線程的 無界隊列方式來運行的執行人。 (但請注意,如果由於在關閉之前的執行期間發生故障導致此單線程終止 ,如果需要執行後續任務,則新的線程將取代其位置任務爲 保證按順序執行且不超過一個任務在任何給定時間將爲 有效。與其他等效的 newFixedThreadPool(1)不同,保證返回的執行程序不會被 重新配置爲使用其他線程。因此,使用來自多家公司的多輸入

,執行人的隊列將是這樣的:

[Company1Task1,Company2Task1,Company1Task2,Company3Task1, Company1Task3,...]

執行程序將按順序處理它。

+0

我認爲關鍵在於他們不必在不同公司之間進行循序漸進。 – shmosel