0

作为我项目的一部分,我需要创建一个包含固定数量的线程的线程池。当线程被分配给不同的进程时,我也需要与线程一起分配那么多会话。我想使用 ConcurrentLinkedQueue(固定的大小)来存储会话,以便当线程完成时,我可以将我的会话放回队列中,使其可用于其他进程。希望我的要求得到明确......任何人都可以给我一些quidelines至于如何实现..?如何使用 ConcurrentLinkedQueue ..?

4

2 回答 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 回答