Libraryless. Click here for Pure Java version (9908L/54K).
sclass RestartableCountdown implements AutoCloseable { java.util.Timer timer; long targetTime; // in sys time ifndef RestartableCountdown_noStats long /*firings,*/ totalSleepTime; // stats endifndef synchronized void setTargetTime(long targetTime, Runnable action) { if (targetTime <= 0) stop(); else if (targetTime != this.targetTime) { start(targetTime-sysNow(), action); this.targetTime = targetTime; } } // stops the countdown and restarts it synchronized void start(long delayMS, O action) { stop(); if (delayMS <= 0) thread { callF(action); } else { ifndef RestartableCountdown_noStats totalSleepTime += delayMS; endifndef timer = doLater_daemon(delayMS, action); targetTime = sysNow()+delayMS; } } void start(double delaySeconds, O action) { start(toMS(delaySeconds), action); } synchronized void stop() { cancelTimer(timer); timer = null; targetTime = 0; } public void close() { stop(); } }
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ekrmjmnbrukm, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1015557 |
Snippet name: | RestartableCountdown |
Eternal ID of this version: | #1015557/11 |
Text MD5: | 33512b8ef0eb920e6611dbb568e6c0fb |
Transpilation MD5: | 83a633bb1316969f434c63bdbcd1d445 |
Author: | stefan |
Category: | javax / timers |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-10-20 02:07:19 |
Source code size: | 1086 bytes / 43 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 620 / 1335 |
Version history: | 10 change(s) |
Referenced in: | #1033563 - MultiSleeper #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) |