If I\'m going to have a call to have a Java Thread go to sleep, is there a reason to prefer one of these forms over the other?
Thread.sleep(x)
TimeUnit.SECONDS.sleep(x) will call Thread.sleep.
The only difference is readability and using TimeUnit is probably easier to understand for non obvious durations (for example: Thread.sleep(180000)
vs. TimeUnit.MINUTES.sleep(3)
).
For reference, see below the code of 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);
}
}
They are the same. I prefer the latter because it is more descriptive and allows to choose time unit (see TimeUnit): DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
.