ConcurrentLinkedQueue使用多线程

时间:2011-02-28 12:19:44

标签: java concurrency java.util.concurrent

作为我项目的一部分,我需要创建一个包含固定no thread的线程池。当线程分配给不同的进程时,我需要分配那么多的会话以及线程。我想使用ConcurrentLinkedQueue (固定大小)存储会话,以便在线程完成时,我可以将我的会话放回队列,使其可用于其他进程。希望我的要求已经明确......任何人都可以给出关于如何实现这一点的一些说明..如何使用ConcurrentLinkedQueue ..?

2 个答案:

答案 0 :(得分:1)

我假设您想要做与

相同的事情
Executors.newFixedThreadPool(n);

不清楚为什么你不只是使用这个线程池。

您还希望将队列用作对象池。您可以使用add()poll()来查看免费元素是否可用。

答案 1 :(得分:0)

  

什么时候将线程分配给不同的进程......

您将无法使用ConcurrentLinkedQueue在不同进程中的线程之间共享资源。它只能从一个进程的线程访问。

如果这不是问题,您可以使用thread pool

Executors.newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 

ThreadFactory可以使用ThreadLocal将Session资源与线程池管理的线程相关联。您可以配置不同的初始化策略。当线程池关闭时,不要忘记清理会话。