【发布时间】:2015-03-28 12:09:22
【问题描述】:
我正在使用springThreadPoolExecutorFactoryBean。它是一个主线程池。在某些情况下,我需要创建 CompletionService 它确保我按照完成顺序获得线程。
我的代码sn-p:
ExecutorService pool = Executors.newFixedThreadPool(list.size());
CompletionService<T> completionService = new ExecutorCompletionService<T>(pool);
问题是我不想在这里创建固定线程池而是使用主线程轮询,只是为了避免创建太多线程。
我当然不能将主线程池传递给完成服务,因为当我从完成服务completionService.take() 获取价值时,我会得到完全不相关的线程。
也许您可以帮我找到一种方法,如何从主线程池创建某种固定线程池并将其传递给完成服务。
非常感谢
【问题讨论】:
-
也许您需要创建一个自定义
ExecutorService,它有一个线程池,以及用于不同任务类别的不同队列。它不必是一个完全自定义的对象,它可能只是一个在 ThreadPoolExecutor 之上分层一些额外智能的包装器。
标签: java multithreading spring concurrency threadpool