package tc.oc.commons.core.scheduler; import javax.annotation.Nullable; public abstract class AbstractTask implements Task { protected final Scheduler scheduler; protected final Runnable runnable; protected @Nullable Object backend; public AbstractTask(Scheduler scheduler, Runnable runnable) { this.scheduler = scheduler; this.runnable = runnable; } @Override public Scheduler getScheduler() { return scheduler; } @Override public Runnable getRunnable() { return runnable; } void setCancelled() { this.backend = null; } void setRunning(Object backend) { this.backend = backend; } @Override public boolean isRunning() { return scheduler.isTaskRunning(this); } @Override public boolean isQueued() { return scheduler.isTaskQueued(this); } @Override public boolean isPending() { return isQueued() || isRunning(); } }