java - 每秒只用当前时间执行代码?

标签 java algorithm

如何在只使用当前时间的情况下每秒执行一次代码? (没有额外的变量,它没有精确到每秒,我对 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/

相关文章:

java - 公钥到字符串,然后返回公钥java

algorithm - 距离计算优化

python - 选择排序不理解这段代码

Java SQL : use previously existing result sets

java - Google Talk API 与 Android 应用的集成

java - 在Android中获取JSONObject中的值类型,以显示对象的结构

java - 使用 DataSource 通过 (Xerial) sqlite-jdbc 驱动程序连接到 SQLite

iphone - .plist 中的可变字符串集合,替代方案?

algorithm - 家庭作业——大O分析

c# - 在两个值之间振荡或 "ping pong"?