我有例行對象的ArrayList,我必須使用此方法來更新任務如何檢查所有任務的完成一個循環,而對於
while(!allRoutineComplete){
for (Routine routine : routineList) {
if(!(routine.isBlocked()) && !(routine.isFinished())) {
routine.run();
}
}
for (Routine routine : routineList) {
routine.updateStatus();
if(routine.isFinished()){
completedRoutineNumber++;
}
if(completedRoutineNumber==routineList.size()){
allRoutineComplete=true;
}
}
}
遺憾的是在布爾allRoutineComplete
的各種狀態我的實現在所有例程完成之前設置爲true。
我的代碼有什麼問題?
如何高效地檢查所有任務的完成?
如果你的程序在自己的線程中運行?怎麼樣使用[CountDownLatch](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html)? –
沒有例程沒有自己的線程...有計數器'timeRun'和'timeTotal'的對象,當'timeRun == timeTotal'時被設置爲'isFinished' – Asgard