![](/img/trans.png)
[英]java multithreading -Wait for free threads availability to create and assign next task
[英]Java Multithreading Wait for Task end
我想请您帮助这段代码。 我有10个GameGeneratorController实例。 每个实例都使用StartTaskCalculation()方法,我想最多创建3个任务(针对1-2-3类型)。 然后,方法AddTask将任务添加到执行程序,该执行程序可以同时处理4个线程。
问题是:我需要检查一下,什么计算发送给了执行者。 例如,当我调用AddTask(1)时,我想等到Calculation(1)完成,然后才再次调用AddTask(1)。
现在,我可以连续调用StartTaskCalculation()100次,并将100个任务添加到执行程序中。
我想同时在执行程序中最多包含30个任务(10GameControllers * 3个任务)。 我试图使用Future.get()获得结果,但这将阻止其他线程。
我需要这4个线程同时运行,当一个线程完成时,给我一些回调,让我知道:“对于此GameGeneratorController,此Calculation(1)已完成”
public class Main {
static ExecutorService executor = Executors.newFixedThreadPool(4);
public static void main(String[] args) {
GameGeneratorControllers[] controllers;
for(1 to 10) {
controllers.add(new GameGeneratorControllers)
}
}
public class GameGeneratorController {
public GameGeneratorController(int gameId, ExecutorService executor )
{
this.gameId = gameId;
this.executor = executor;
}
ExecutorService executor;
int gameId;
public void StartTaskCalculation(){
int Type = some logic to pick up from 1 , 2 or 3
AddTask(Type);
}
public void AddTask(int taskType)
{
executor.execute(Calculation(int taskType));
}
void Calculation(int i){
//some calculation here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.