2011-02-28 27 views
0

作爲我的項目的一部分,我需要創建一個線程池,其中包含固定的線程數。當線程分配給不同的進程時,我需要隨着線程分配多個會話。我想要使用ConcurrentLinkedQueue(固定大小)來存儲會話,以便在線程完成時,我可以將我的會話放回到隊列中,使其可以用於其他進程。希望我的要求已經清楚了...任何一個人都可以給我一些關於如何實現這一點的問題。?如何使用ConcurrentLinkedQueue ..?ConcurrentLinkedQueue與多線程的使用

+0

你是說你的程序或多個進程中的「進程」,因爲操作系統會理解它們嗎? – 2011-02-28 12:28:11

回答

0

當過線程分配給不同的過程......

您將無法在不同的進程用的ConcurrentLinkedQueue線程之間共享資源。它將只能從一個進程的線程訪問。

如果這不是問題,你可以使用一個thread pool

Executors.newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 

一個ThreadFactory可以通過使用ThreadLocal線程池管理線程會話資源相關聯。您可以配置不同的初始化策略。當線程池關閉時,不要忘記清理會話。

1

我假設你想要做同樣的事情

Executors.newFixedThreadPool(n); 

它不清楚你爲什麼不直接使用此線程池。

它似乎也希望使用隊列作爲對象池。您可以使用add()至和poll()來查看是否有空閒元素可用。