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)
or
TimeUnit.SECONDS.sleep(y)
For example, with thread. sleep(1000), you intended 1,000 milliseconds, but it could potentially sleep for more than 1,000 milliseconds too as it waits for its turn in the scheduler. Each thread has its own use of CPU and virtual memory.
Thread. sleep is bad! It blocks the current thread and renders it unusable for further work.
sleep using the specified time unit. It has 7 constants – DAYS , HOURS , MICROSECONDS , MILLISECONDS , MINUTES , NANOSECONDS , SECONDS for convenience. To sleep in seconds, use TimeUnit. SECONDS .
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); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With