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