如何创建多个线程池,即每个具有单个线程的多个执行器

时间:2017-08-31 00:53:47

标签: java multithreading executorservice threadpoolexecutor executor

我目前需要创建多个线程池。每个线程池都是单线程线程池。 我根据条件将任务分配给每个线程池。所以我需要保持对线程池的跟踪。

我该怎么做? 我可以创建一个线程池数组吗?

ExecutorService executor = Executors.newSingleThreadExecutor();

这就是我们创建1个线程池的方法。现在我想创建5个线程池。

ExecutorService[] executor;
for(int i=0;i<5;i++){
executor[i]= Executors.newSingleThreadExecutor();
}

这可以吗?这是正确的语法吗?如果没有,你能建议一种方法吗?

1 个答案:

答案 0 :(得分:0)

在您的场景中,我相信可以使用一个单独的线程Executor,因为根据文档:

  

创建一个Executor,它使用一个工作线程来操作   无界队列。 (但请注意,如果此单个线程终止   由于在关机之前执行期间出现故障,新的将会   如果需要执行后续任务,请取代它。)任务是   保证按顺序执行,并且不会超过一个任务   在任何给定时间都有效。不同于其他等同物   newFixedThreadPool(1)保证不返回执行者   可重新配置以使用其他线程。

因此,对于来自多个公司的多个输入,Executor的队列将如下所示:

  

[Company1Task1,Company2Task1,Company1Task2,Company3Task1,   Company1Task3,...]

Executor将按顺序处理它。