sclass DoLater implements AutoCloseable { long targetSysTime; volatile Runnable action; transient settable ISleeper sleeper; transient Executor executor; transient new Flag enabled; transient new Flag cancelledOrExecuted; *() {} *(long *targetSysTime, Runnable *action) {} void enable() { if (!enabled.raise()) ret; if (sleeper == null) sleeper = defaultSleeper(); sleeper.doLater(targetSysTime, r { if (!cancelledOrExecuted.raise()) ret; runWithExecutor(action, executor); }); } // returns true iff successful bool cancel() { if (!cancelledOrExecuted.raise()) false; ret true with close(); } public void close { cancelledOrExecuted.raise(); //dispose sleeper; } }