@Override
    public <V> ScheduledFuture<V> schedule(Callable<V> task, long delay, TimeUnit unit) {
        ScheduledTask<V> scheduledTask = new ScheduledTask<V>(this, task, true, delay, null, null, unit);
        if (futures.add(scheduledTask.future) && ++futureCount % FUTURE_PURGE_INTERVAL == 0)
            purgeFutures();
        return scheduledTask.future;
    }
@ Override public < V > ScheduledFuture < V > schedule ( Callable < V > task , long delay , TimeUnit unit ) { ScheduledTask < V > scheduledTask = new ScheduledTask < V > ( this , task , true , delay , null , null , unit ) ; if ( futures . add ( scheduledTask . future ) && ++ futureCount % FUTURE_PURGE_INTERVAL == 0 ) purgeFutures ( ) ; return scheduledTask . future ; }
@see java.util.concurrent.ScheduledExecutorService#schedule(java.util.concurrent.Callable, long, java.util.concurrent.TimeUnit)