private synchronized void loop() throws InterruptedException { long current= System.currentTimeMillis(); Task task= currentTask(); while (task != EXIT) { long delay= fNextWakeup - current; if (delay <= 0) { task.run(); task= task.nextTask(); schedule(task, current); } else { wait(delay); current= System.currentTimeMillis(); task= currentTask(); } } }
private synchronized void loop() throws InterruptedException { long current= System.currentTimeMillis(); Task task= currentTask(); while (task != EXIT) { long delay= fNextWakeup - current; if (delay <= 0) { task.run(); task= task.nextTask(); schedule(task, current); } else { wait(delay); current= System.currentTimeMillis(); task= currentTask(); } } }
private void schedule(Task task, long current) { fTask= task; long nextWakeup= current + task.delay(); if (nextWakeup <= current) fNextWakeup= Long.MAX_VALUE; else fNextWakeup= nextWakeup; }
private void schedule(Task task, long current) { fTask= task; long nextWakeup= current + task.delay(); if (nextWakeup <= current) fNextWakeup= Long.MAX_VALUE; else fNextWakeup= nextWakeup; }