Thread.sleep与TimeUnit.SECONDS.sleep
如果我要打电话让Java线程进入睡眠状态,是否有理由select其中一种forms?
Thread.sleep(x)
要么
TimeUnit.SECONDS.sleep(y)
TimeUnit.SECONDS.sleep(x)
将调用Thread.sleep
。 唯一的区别是可读性和使用TimeUnit可能更容易理解非明显的持续时间(例如: Thread.sleep(180000)
与TimeUnit.MINUTES.sleep(3)
)。
有关参考,请参阅TimeUnit中sleep()
的代码:
public void sleep(long timeout) throws InterruptedException { if (timeout > 0) { long ms = toMillis(timeout); int ns = excessNanos(timeout, ms); Thread.sleep(ms, ns); } }
他们是一样的。 我更喜欢后者,因为它更具描述性,可以select时间单位(见TimeUnit
):日, HOURS
, MICROSECONDS
, MICROSECONDS
, MINUTES
, NANOSECONDS
, SECONDS
。