Pilihan lainnya adalahThread.sleep(Duration.ofSeconds(s).toMillis())
cambunctious
Jawaban:
126
TimeUnit.SECONDS.sleep(x)akan menelepon Thread.sleep. Satu-satunya perbedaan adalah keterbacaan dan penggunaan TimeUnitmungkin 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:
publicvoidsleep(long timeout)throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
Saya setuju. Jika Anda ingin menyatakan waktu tidur Anda konstan yang dapat diubah nanti, katakanlah, dari 1 menit hingga 10 detik, salah satu solusinya adalah public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);. Hal ini memungkinkan Thread.sleep()tetapi mempertahankan keunggulan keterbacaan TimeUnit.
Ole VV
8
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.
argumentatif: Saya lebih suka yang pertama - Saya ingin utas tertidur, bukan SECONDSatau MILLISECONDS[:-)
user85421
3
@CarlosHeuberger: yah, Anda bisa membacanya sebagai sleep untuk xSECONDS , tapi pastinya itu masalah selera. Di sisi lain, catatan itu sleep()adalah staticmetode pada Thread- sehingga satu mungkin berpendapat bahwa tidak jelas yang benang mengira untuk tidur (apa Thread myThread = ...; myThread.sleep()artinya?)
Tomasz Nurkiewicz
6
@CarlosHeuberger Akan jauh lebih baik untuk dapat menulisThread.sleep(3, TimeUnit.SECONDS)
assylias
Diperbarui untuk menghilangkan kebingungan tentang kesetaraan karena unit yang dipilih
Rachel
@assylias Saya setuju, tapi sayangnya saya tidak bisa mengubahnya [: - |
Thread.sleep(Duration.ofSeconds(s).toMillis())
Jawaban:
TimeUnit.SECONDS.sleep(x)
akan meneleponThread.sleep
. Satu-satunya perbedaan adalah keterbacaan dan penggunaanTimeUnit
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 iniTimeUnit
:public void sleep(long timeout) throws InterruptedException { if (timeout > 0) { long ms = toMillis(timeout); int ns = excessNanos(timeout, ms); Thread.sleep(ms, ns); } }
sumber
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
. Hal ini memungkinkanThread.sleep()
tetapi mempertahankan keunggulan keterbacaanTimeUnit
.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
.sumber
SECONDS
atauMILLISECONDS
[:-)SECONDS
, tapi pastinya itu masalah selera. Di sisi lain, catatan itusleep()
adalahstatic
metode padaThread
- sehingga satu mungkin berpendapat bahwa tidak jelas yang benang mengira untuk tidur (apaThread myThread = ...; myThread.sleep()
artinya?)Thread.sleep(3, TimeUnit.SECONDS)