如何创建多个线程池(即多个执行程序,每个线程池都有一个线程)
问题描述:
我目前需要创建多个线程池。每个线程池都是一个单线程线程池。 根据条件将任务分配给每个线程池。所以我需要跟踪线程池。如何创建多个线程池(即多个执行程序,每个线程池都有一个线程)
我该怎么做? 我可以创建一个线程数组吗?
ExecutorService executor = Executors.newSingleThreadExecutor();
这是我们如何创建1个线程池。现在我想创建5个线程池。
ExecutorService[] executor;
for(int i=0;i<5;i++){
executor[i]= Executors.newSingleThreadExecutor();
}
可以吗?这是正确的语法?如果不是,你能提出一个办法吗?
答
在您的情况,我相信这是可能仅使用一个单独的线程执行器根据文件的时间:
创建一个使用单个worker线程的 无界队列方式来运行的执行人。 (但请注意,如果由于在关闭之前的执行期间发生故障导致此单线程终止 ,如果需要执行后续任务,则新的线程将取代其位置任务为 保证按顺序执行且不超过一个任务在任何给定时间将为 有效。与其他等效的 newFixedThreadPool(1)不同,保证返回的执行程序不会被 重新配置为使用其他线程。因此,使用来自多家公司的多输入
,执行人的队列将是这样的:
[Company1Task1,Company2Task1,Company1Task2,Company3Task1, Company1Task3,...]
执行程序将按顺序处理它。
+0
我认为关键在于他们不必在不同公司之间进行循序渐进。 – shmosel
当然,你可以这样做。但你为什么想要? – shmosel
我需要我的活动由其各自公司订购。因此,与一家公司有关的所有事件都被发送到一个线程池。这样他们将按照我为特定公司收到的相同顺序执行。 – africandrogba
你知道他们发送的顺序和他们收到的顺序不一定是相同的,对吧? – alfasin