小编nir*_*raj的帖子

Java:具有多个队列的Executor服务

需求:

  1. 我将消息分组为不同类型,例如Type1, Type2 ... Type100.
  2. 我想并行执行不同类型的消息.让我们说10个线程,但所有相同类型的消息必须逐个执行.执行顺序无关紧要.
  3. 一旦一个线程完成了所有的消息TypeX.它应该开始处理另一个Type.

我经历了不同的答案:他们中的大多数建议执行器服务来处理多线程.假设我们创建执行服务

ExecutorService executorService = Executors.newFixedThreadPool(10);
Run Code Online (Sandbox Code Playgroud)

但是一旦我们使用了提交消息 executorService.submit(runnableMessage);

我们无法控制仅将特定类型的消息分配给特定线程.

解:

创建单线程执行程序数组

ExecutorService[] pools = new ExecutorService[10];
Run Code Online (Sandbox Code Playgroud)

并且最初传递Type1,Type2 ... Type10的消息,然后如果任何执行程序已完成执行,则将Type11分配给它并继续执行直到所有类型都被处理.

有没有更好的方法呢?

类似于具有多个队列的执行器服务,我可以将每种类型的消息推送到不同的队列?

java multithreading executorservice

7
推荐指数
2
解决办法
2000
查看次数

标签 统计

executorservice ×1

java ×1

multithreading ×1