sclass DoLater implements AutoCloseable { long targetSysTime; volatile Runnable action; transient ISleeper sleeper; transient Executor executor; transient bool enabled; *() {} *(long *targetSysTime, Runnable *action) {} void enable() { if (enabled) ret; if (sleeper == null) sleeper = defaultSleeper(); sleeper.doLater(targetSysTime, r { runWithExecutor(action, executor); }); } public void close { main close(sleeper); } }