/** * Sets the next time to run for a periodic task. * @return true if there is a next run time for the periodic task, * false if the periodic task is done and no need to be scheduled again. */ private void setNextRunTime() { long p = period; if (p > 0) nextRunTime += p; else nextRunTime = triggerTime(-p); }
/** * Returns the trigger time of a delayed action. */ private long triggerTime(long delay, TimeUnit unit) { return triggerTime(unit.toNanos((delay < 0) ? 0 : delay)); }
public <V> ScheduledFuture<V> schedule(AbstractManagedExecutorService executor, Callable<V> callable, long delay, TimeUnit unit) { if (callable == null || unit == null) throw new NullPointerException(); ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<V> t = new ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<>( executor, callable, triggerTime(delay, unit)); delayedExecute(t); return t; }
public ScheduledFuture<?> scheduleWithFixedDelay(AbstractManagedExecutorService executor, Runnable command, long initialDelay, long delay, TimeUnit unit) { if (command == null || unit == null) throw new NullPointerException(); if (delay <= 0) throw new IllegalArgumentException(); ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<Void> t = new ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<>( executor, command, null, triggerTime(initialDelay, unit), unit.toNanos(-delay)); delayedExecute(t); return t; }
public ScheduledFuture<?> scheduleAtFixedRate(AbstractManagedExecutorService executor, Runnable command, long initialDelay, long period, TimeUnit unit) { if (command == null || unit == null) throw new NullPointerException(); if (period <= 0) throw new IllegalArgumentException(); ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<Void> t = new ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<>( executor, command, null, triggerTime(initialDelay, unit), unit.toNanos(period)); delayedExecute(t); return t; }
public <V> ScheduledFuture<V> schedule(AbstractManagedExecutorService executor, Runnable command, V result, long delay, TimeUnit unit) { if (command == null || unit == null) { throw new NullPointerException(); } ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<V> t = new ManagedScheduledThreadPoolExecutor.ManagedScheduledFutureTask<>( executor, command, result, triggerTime(delay, unit)); delayedExecute(t); return t; }