Thread.sleep与TimeUnit.SECONDS.sleep

时间:2012-03-06 16:21:37

标签: java sleep

如果我打算让一个Java线程进入睡眠状态,是否有理由偏好其中一种形式而不是另一种?

Thread.sleep(x)

TimeUnit.SECONDS.sleep(y)

2 个答案:

答案 0 :(得分:101)

TimeUnit.SECONDS.sleep(x)会致电Thread.sleep。 唯一的区别是可读性,使用TimeUnit可能更容易理解非显而易见的持续时间(例如:Thread.sleep(180000)TimeUnit.MINUTES.sleep(3))。

供参考,请参阅以下sleep()TimeUnit的代码:

public void sleep(long timeout) throws InterruptedException {
    if (timeout > 0) {
        long ms = toMillis(timeout);
        int ns = excessNanos(timeout, ms);
        Thread.sleep(ms, ns);
    }
}

答案 1 :(得分:7)

他们是一样的。我更喜欢后者,因为它更具描述性,允许选择时间单位(请参阅TimeUnit):DAYSHOURSMICROSECONDSMILLISECONDS,{{ 1}},MINUTESNANOSECONDS