我想请您提供此代码帮助。我有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
}
}