我目前需要创建多个线程池。每个线程池都是单线程线程池。 我根据条件将任务分配给每个线程池。所以我需要保持对线程池的跟踪。
我该怎么做? 我可以创建一个线程池数组吗?
ExecutorService executor = Executors.newSingleThreadExecutor();
这就是我们创建1个线程池的方法。现在我想创建5个线程池。
ExecutorService[] executor;
for(int i=0;i<5;i++){
executor[i]= Executors.newSingleThreadExecutor();
}
这可以吗?这是正确的语法吗?如果没有,你能建议一种方法吗?
答案 0 :(得分:0)
在您的场景中,我相信可以使用一个单独的线程Executor,因为根据文档:
创建一个Executor,它使用一个工作线程来操作 无界队列。 (但请注意,如果此单个线程终止 由于在关机之前执行期间出现故障,新的将会 如果需要执行后续任务,请取代它。)任务是 保证按顺序执行,并且不会超过一个任务 在任何给定时间都有效。不同于其他等同物 newFixedThreadPool(1)保证不返回执行者 可重新配置以使用其他线程。
因此,对于来自多个公司的多个输入,Executor的队列将如下所示:
[Company1Task1,Company2Task1,Company1Task2,Company3Task1, Company1Task3,...]
Executor将按顺序处理它。