Javaスレッドをスリープ状態にするための呼び出しを行う場合、これらの形式の1つを他の形式よりも優先する理由はありますか?
Thread.sleep(x)
または
TimeUnit.SECONDS.sleep(y)
回答:
TimeUnit.SECONDS.sleep(x)
を呼び出しますThread.sleep
。唯一の違いは読みやすさであり、使用TimeUnit
することは、明白でない期間(例:Thread.sleep(180000)
vs TimeUnit.MINUTES.sleep(3)
。)ではおそらく理解しやすいでしょう。
参考のために、コードの下に参照sleep()
で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
またはMILLISECONDS
[:-)ではなくスレッドをスリープさせたい
SECONDS
として読むことができますが、確かにそれは好みの問題です。一方、それsleep()
はstatic
メソッドオンであることに注意してくださいThread
-したがって、どのスレッドがスリープすることになっているのかが明確ではないと主張する人もいるかもしれません(どういうThread myThread = ...; myThread.sleep()
意味ですか?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())