0

我目前需要创建多个线程池。每个线程池都是一个单线程线程池。 根据条件将任务分配给每个线程池。所以我需要跟踪线程池。如何创建多个线程池(即多个执行程序,每个线程池都有一个线程)

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

ExecutorService executor = Executors.newSingleThreadExecutor(); 

这是我们如何创建1个线程池。现在我想创建5个线程池。

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

可以吗?这是正确的语法?如果不是,你能提出一个办法吗?

+5

当然,你可以这样做。但你为什么想要? – shmosel

+0

我需要我的活动由其各自公司订购。因此,与一家公司有关的所有事件都被发送到一个线程池。这样他们将按照我为特定公司收到的相同顺序执行。 – africandrogba

+0

你知道他们发送的顺序和他们收到的顺序不一定是相同的,对吧? – alfasin

回答

0

在您的情况,我相信这是可能仅使用一个单独的线程执行器根据文件的时间:

创建一个使用单个worker线程的 无界队列方式来运行的执行人。 (但请注意,如果由于在关闭之前的执行期间发生故障导致此单线程终止 ,如果需要执行后续任务,则新的线程将取代其位置任务为 保证按顺序执行且不超过一个任务在任何给定时间将为 有效。与其他等效的 newFixedThreadPool(1)不同,保证返回的执行程序不会被 重新配置为使用其他线程。因此,使用来自多家公司的多输入

,执行人的队列将是这样的:

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

执行程序将按顺序处理它。

+0

我认为关键在于他们不必在不同公司之间进行循序渐进。 – shmosel