如何在ThreadPoolExecutor中的线程之间分配任务

我有以下问题,

我有一个任务队列,有很多类型的任务,如:

A, B, C, D, ...

我在线程池中执行这些任务.

但我必须同时限制相同类型的任务执行,因此,这很糟糕:

Thread-1: [A, D, C, B, ...]
Thread-2: [A, C, D, B, ...]

类型A和B的任务可以同时执行.

但这很好:

Thread-1: [A,B,A,B,...]
Thread-2: [C,D,D,C,...]

因此,相同类型的任务总是按顺序执行.

实现此功能的最简单方法是什么?

最佳答案 使用像Akka这样的actor框架可以轻松解决这个问题.

对于每种类型的任务.创造一个演员.

对于每个单独的任务,创建一条消息并将其发送给相应类型的actor.消息可以是Runnable类型,因为它们现在可能是,并且actor的反应方法可以是
  
  @覆盖
  public void onReceive(Object msg){
    ((可运行)MSG).RUN();
  }

这样,您的程序将针对任意数量的线程正确运行.

点赞