需求:
Type1, Type2 ... Type100.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分配给它并继续执行直到所有类型都被处理.
有没有更好的方法呢?
类似于具有多个队列的执行器服务,我可以将每种类型的消息推送到不同的队列?