如何在只使用当前时间的情况下每秒执行一次代码? (没有额外的变量,它没有精确到每秒,我对 800 到 1200 毫秒之间的变化很满意)
我试过:
//code repeated every 30-100ms
if ((System.currentTimeMillis() % 1000) == 0) { //execute code
但这行不通,因为 currentTimeMillis 被 1000 整除的可能性不是很高。
关于这个主题有什么好的想法吗?
[edit] 请注意我的“无额外变量”评论。让我解释得更好一点: 我需要把这段代码放在一个地方,我只有一个很长的值,表示自 1970 年以来的 unix 时间(currentTimeMillis 的值)。我什么都不记得了,也不能保存下次执行代码时可以访问的额外变量。这是一个特例。
最佳答案
最好的方法是使用 ScheduledExecutorService
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
Future future = service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
当不再需要时,可以取消执行
future.cancel(true);
关于java - 每秒只用当前时间执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924168/