* 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;
}