package tc.oc.commons.core.scheduler; /** * A {@link Task} that is scheduled once with immutable parameters, * and cannot be used after completing or being cancelled. */ public class DisposableTask extends AbstractTask { protected final Parameters parameters; protected boolean cancelled = false; DisposableTask(Scheduler scheduler, Parameters parameters, Runnable runnable) { super(scheduler, runnable); this.parameters = parameters; } @Override public Parameters getParameters() { return parameters; } @Override public void cancel() { if(!cancelled) { scheduler.cancelTask(this); } } void setCancelled() { super.setCancelled(); cancelled = true; } @Override public String toString() { return getClass().getSimpleName() + "{runnable=" + runnable + ", parameters=" + parameters + "}"; } }