private Future<T> doSchedule( long nextTime ) { return getScheduler().getScheduledExecutorService().schedule( this, Math.max( 0, nextTime - System.currentTimeMillis() ), TimeUnit.MILLISECONDS ); }
private Future<T> doSchedule(final long nextTime, final boolean inheritContext) { // FIXME: All this coz MDCUtils are in Core, while // scheduler is a module ahead. If scheduler would // be in core, this would not be needed, but instead // MDCUtils.markCurrentContextNonInheritable() call would do it if (!inheritContext) { MDC.put("non-inheritable", "non-inheritable"); } try { return getScheduler().getScheduledExecutorService().schedule(this, Math.max(0, nextTime - System.currentTimeMillis()), TimeUnit.MILLISECONDS); } finally { if (!inheritContext) { MDC.remove("non-inheritable"); } } }
protected long reschedule(boolean setFuture) { if (!isManualRunScheduled()) { SchedulerIterator iter = getScheduleIterator(); if (iter != null && !iter.isFinished()) { nextRun = iter.next(); long nextTime = 0; if (nextRun != null) { nextTime = nextRun.getTime(); } else { nextTime = System.currentTimeMillis(); } getScheduler().taskRescheduled(this); if (setFuture) { setFuture(doSchedule(nextTime, iter instanceof RunNowSchedulerIterator)); } return nextTime; } else { nextRun = null; } } else { nextRun = null; } return -1; }
getScheduler().taskRescheduled( this );
if (!((SchedulerTask<?>) getCallable()).allowConcurrentExecution(getScheduler().getActiveTasks())) { if (nextRun != null) { setFuture(getScheduler().getScheduledExecutorService().schedule(this, 10000, TimeUnit.MILLISECONDS)); getScheduler().removeFromTasksMap(this); getScheduler().removeFromTasksMap(this);
if ( !( (SchedulerTask<?>) getCallable() ).allowConcurrentExecution( getScheduler().getActiveTasks() ) ) setFuture( getScheduler().getScheduledExecutorService().schedule( this, 10000, TimeUnit.MILLISECONDS ) ); getScheduler().removeFromTasksMap( this ); getScheduler().removeFromTasksMap( this );
getScheduler().removeFromTasksMap(this);
getScheduler().removeFromTasksMap( this );