Jika saya akan mendapat panggilan agar Thread Java tertidur, adakah alasan untuk memilih salah satu dari formulir ini daripada yang lain?
Thread.sleep(x)
atau
TimeUnit.SECONDS.sleep(y)
Jawaban:
TimeUnit.SECONDS.sleep(x)
akan menelepon Thread.sleep
. Satu-satunya perbedaan adalah keterbacaan dan penggunaan TimeUnit
mungkin lebih mudah dipahami untuk jangka waktu yang tidak jelas (misalnya: Thread.sleep(180000)
vs. TimeUnit.MINUTES.sleep(3)
).
Sebagai referensi, lihat kode sleep()
di bawah ini 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);
. Hal ini memungkinkan Thread.sleep()
tetapi mempertahankan keunggulan keterbacaan TimeUnit
.
Mereka sama. Saya lebih suka yang kedua karena lebih deskriptif dan memungkinkan untuk memilih satuan waktu (lihat TimeUnit
): DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
.
SECONDS
atau MILLISECONDS
[:-)
SECONDS
, tapi pastinya itu masalah selera. Di sisi lain, catatan itu sleep()
adalah static
metode pada Thread
- sehingga satu mungkin berpendapat bahwa tidak jelas yang benang mengira untuk tidur (apa Thread myThread = ...; myThread.sleep()
artinya?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())