如果我要打个电话让Java Thread进入睡眠状态,是否有理由偏爱其中一种而不是另一种?
Thread.sleep(x)
要么
TimeUnit.SECONDS.sleep(y)
Answers:
TimeUnit.SECONDS.sleep(x)
会打电话给Thread.sleep
。唯一的区别是可读性,并且TimeUnit
在不明显的持续时间内使用(例如:Thread.sleep(180000)
vs TimeUnit.MINUTES.sleep(3)
.)可能更容易理解。
供参考,请参见以下sleep()
in中的代码TimeUnit
:
public void sleep(long timeout) throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
。这允许Thread.sleep()
但保持的可读性优势TimeUnit
。
他们是一样的。我更喜欢后者,因为它是更具描述性的,并允许选择时间单位(见TimeUnit
): ,DAYS
,HOURS
,MICROSECONDS
,MILLISECONDS
,MINUTES
,。NANOSECONDS
SECONDS
SECONDS
or MILLISECONDS
[:-)
SECONDS
来阅读,但是肯定是有品味的。在另一方面,注意,sleep()
是static
于法Thread
-所以有人可能会争辩说,目前尚不清楚该线程将睡眠(什么呢Thread myThread = ...; myThread.sleep()
是什么意思?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())