[英]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.