代码之家  ›  专栏  ›  技术社区  ›  bobber205

睡到下一秒

  •  4
  • bobber205  · 技术社区  · 14 年前

    我发现经常需要等到下一秒再做一系列的下一个手术。这大大减慢了单元测试的速度。所以我的问题是:

    我睡一秒钟到1:01:89

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

    2 回复  |  直到 14 年前
        1
  •  11
  •   Jon Skeet    14 年前

    你可以这样做:

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

    它不会是精确的,提醒你-你可能需要迭代,这是有点混乱。

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

        2
  •  1
  •   EboMike    14 年前

    你说的“秒”是指系统时钟的秒吗?您可以通过获取以毫秒为单位的当前时间 System.currentTimeMillis() ,然后从1000中减去这个数字,然后按这个数字睡觉,但要记住线程。睡眠()并不完全准确,所以如果超出一点,不要感到惊讶。