web-dev-qa-db-ja.com

Thread.sleepとTimeUnit.SECONDS.sleep

Javaスレッドをスリープ状態にする呼び出しを行う場合、これらの形式の一方を他方よりも優先する理由はありますか?

Thread.sleep(x)

または

TimeUnit.SECONDS.sleep(y)
77
Rachel

TimeUnit.SECONDS.sleep(x)_Thread.sleep_ を呼び出します。唯一の違いは読みやすさであり、 TimeUnit を使用すると、おそらく明らかでない期間で理解しやすくなります(例:Thread.sleep(180000) vs. TimeUnit.MINUTES.sleep(3)) 。

参考として、以下のTimeUnitsleep()のコードを参照してください。

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

それらは同じです。後者のほうがわかりやすく、時間単位を選択できるため、後者の方が好きです( TimeUnit を参照):DAYSHOURSMICROSECONDSMILLISECONDSMINUTESNANOSECONDSSECONDS

7