作为我项目的一部分,我需要创建一个包含固定数量的线程的线程池。当线程被分配给不同的进程时,我也需要与线程一起分配那么多会话。我想使用 ConcurrentLinkedQueue(固定的大小)来存储会话,以便当线程完成时,我可以将我的会话放回队列中,使其可用于其他进程。希望我的要求得到明确......任何人都可以给我一些quidelines至于如何实现..?如何使用 ConcurrentLinkedQueue ..?
问问题
1133 次
2 回答
1
我假设你想做同样的事情
Executors.newFixedThreadPool(n);
不清楚为什么你不只使用这个线程池。
看来您也想将队列用作对象池。您可以使用add()
to 和poll()
查看是否有可用的免费元素。
于 2011-02-28T12:26:57.573 回答
0
当线程被分配给不同的进程时......
您将无法使用 ConcurrentLinkedQueue在不同进程中的线程之间共享资源。它只能从一个进程的线程中访问。
如果这不是问题,您可以使用线程池:
Executors.newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
ThreadFactory可以使用ThreadLocal将Session 资源与线程池管理的线程相关联。您可以配置不同的初始化策略。不要忘记在线程池关闭时清理会话。
于 2011-02-28T12:26:18.493 回答