Java Thread'ı uyutmak için bir telefon görüşmesi yapacaksam, bu formlardan birini diğerine tercih etmem için bir neden var mı?
Thread.sleep(x)
veya
TimeUnit.SECONDS.sleep(y)
Yanıtlar:
TimeUnit.SECONDS.sleep(x)
arayacak Thread.sleep
. Tek fark okunabilirliktir ve kullanım TimeUnit
, belirgin olmayan süreler için anlaşılması muhtemelen daha kolaydır (örneğin: Thread.sleep(180000)
vs. TimeUnit.MINUTES.sleep(3)
).
Başvuru için, kodu aşağıya bakınız sleep()
de 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);
. Bu Thread.sleep()
, okunabilirlik avantajına izin verir ancak bunu korur TimeUnit
.
Onlar aynı. Daha açıklayıcı ve zaman birimi (bkz seçmenize olanak verir çünkü ikinci tercih TimeUnit
): DAYS
, HOURS
, MICROSECONDS
, MILLISECONDS
, MINUTES
, NANOSECONDS
, SECONDS
.
SECONDS
MILLISECONDS
SECONDS
olarak okuyabilirsiniz , ama kesinlikle bir zevk meselesi. Öte yandan, kayda göre sleep()
ise static
üzerinde yöntem Thread
- Bir uyku için varsayalım ki iplik belli değil iddia edebilir böylece (yapar Thread myThread = ...; myThread.sleep()
ortalama?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())