gpt4 book ai didi

java - ThreadPoolExecutor中如何在线程间分配任务

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:55 24 4
gpt4 key购买 nike

我有以下问题,

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

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 类型,就像它们现在可能的那样,参与者的 react 方法可以是
@覆盖
public void onReceive(Object msg) {
((Runnable)msg).run();
}

这样你的程序就可以为任意数量的线程正确运行。

关于java - ThreadPoolExecutor中如何在线程间分配任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com