java - 睡到下一秒

标签 java multithreading sleep

我发现经常需要等到下一秒才能执行系列中的下一个操作。这大大减慢了单元测试的速度。所以这是我的问题:

除了执行 Thread.sleep(1000) 之外,是否有更快更有效的 sleep 方式,直到秒变为下一秒?

假设时间是 1:00:89

我睡一秒钟到 1:01:89

我宁愿在时间到达 1:01 时继续执行 或尽可能接近。

这合理吗? ^_^

最佳答案

好吧,你可以这样做:

long millisWithinSecond = System.currentTimeMillis() % 1000;
Thread.sleep(1000 - millisWithinSecond);

请注意,这并不准确 - 您可能需要迭代,这有点困惑。

但是,最好不要 sleep 。你能注入(inject)一个“ sleep 服务”,让你在测试中伪造 sleep 吗? (我很少需要这样做,但我经常注入(inject)一个假时钟来报告不同的时间。) hibernate 在生产代码中的目的到底是什么?

关于java - 睡到下一秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561308/

相关文章:

java - 使用 double 的二元运算符 '>' 的操作数类型错误

java - 如何使用 mockito 模拟字符串?

node.js - Meteor 中的线性执行模型是什么?

Bash 跳过 sleep 并进入下一个循环迭代

.net - 线程正在休眠时,VB .Net服务不会停止

java - writeValue 方法中的 Jackson 2.0 序列化配置

java - <url-pattern> 标签的路径映射

c++ - 多线程环境下的rocksdb

python - mpi4py 与进程和线程

C++ 首先休眠于 "couts"