我有以下问题,
我有一个任务队列,有很多类型的任务,如:
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();
}
这样,您的程序将针对任意数量的线程正确运行.