Antworten:
TimeUnit.SECONDS.sleep(x)
wird anrufen Thread.sleep
. Der einzige Unterschied ist die Lesbarkeit und die Verwendung TimeUnit
ist wahrscheinlich für nicht offensichtliche Zeiträume leichter zu verstehen (zum Beispiel: Thread.sleep(180000)
vs. TimeUnit.MINUTES.sleep(3)
).
Als Referenz siehe unten den Code von 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);
. Dies ermöglicht Thread.sleep()
, behält aber den Lesbarkeitsvorteil von bei TimeUnit
.
Sie sind gleich. Ich ziehe das letztere , weil es mehr beschreibend und ermöglicht Zeiteinheit (siehe wählen TimeUnit
): DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
.
SECONDS
oder MILLISECONDS
[:-)
SECONDS
lesen , aber es ist sicherlich Geschmackssache. Beachten Sie andererseits, dass dies sleep()
eine static
Methode ist Thread
- man könnte also argumentieren, dass nicht klar ist, welcher Thread schlafen soll (was bedeutet Thread myThread = ...; myThread.sleep()
das?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())