if(updates.isEmpty()) {
- long start = System.nanoTime();
-
- operationQueue.waitFor();
+ long duration = operationQueue.waitFor();
if (!alive)
break main;
- long duration = System.nanoTime()-start;
if(duration > 4000000000L) {
checkIdle();
}
+
}
// long sss = System.nanoTime();
* Wake up when new operations are scheduled or the last operation is committed
* Called by MainProgram thread
*/
- synchronized void waitFor() {
+ synchronized long waitFor() {
mainProgram.assertMainProgramThread();
// One last check within the monitor
- if(!operations.isEmpty() || !tasks.isEmpty()) return;
+ if(!operations.isEmpty() || !tasks.isEmpty()) return 0;
+ long start = System.nanoTime();
try {
wait(5000);
} catch (InterruptedException e) {
LOGGER.error("Unexpected interruption", e);
}
+ return System.nanoTime() - start;
}