睡到下一秒

bob*_*205 4 java multithreading sleep

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

而不是做Thread.sleep(1000)是否有更快更有效的睡眠方式,直到第二次更改到下一秒?

说时间是1:00:89

我睡了一秒钟到1:01:89

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

这合理吗?^ _ ^

Jon*_*eet 11

好吧,你可以这样做:

long millisWithinSecond = System.currentTimeMillis() % 1000;
Thread.sleep(1000 - millisWithinSecond);
Run Code Online (Sandbox Code Playgroud)

它会不准确,请注意 - 您可能需要迭代,这有点乱.

但是,最好不要睡觉.你能注入一个"睡眠服务",让你在测试中假装睡觉吗?(我很少需要这样做,但我经常注入一个假时钟来报告不同的时间.)在生产代码中睡觉的目的是什么?