Thread.sleep z Duration
Używaj Duration dla samo-dokumentujących wartości czasu.
Porównanie kodu
✕ Java 8
// What unit is 5000? ms? us? Thread.sleep(5000); // 2.5 seconds: math required Thread.sleep(2500);
✓ Java 19+
Thread.sleep(
Duration.ofSeconds(5)
);
Thread.sleep(
Duration.ofMillis(2500)
);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Samo-dokumentujący
Duration.ofSeconds(5) jest jednoznaczne.
Bezpieczne jednostki
Brak ryzyka przypadkowego przekazania mikrosekund jako milisekund.
Kompozycyjność
Operacje na Duration: plus(), multipliedBy() itp.
Stare podejście
Milisekundy
Nowoczesne podejście
Duration
Od JDK
19
Poziom trudności
Początkujący
Wsparcie JDK
Thread.sleep z Duration
Dostępne
Szeroko dostępne od JDK 19 (wrzesień 2022)
Jak to działa
Thread.sleep(Duration) sprawia, że jednostka czasu jest jawna. Koniec z zgadywaniem, czy 5000 oznacza milisekundy czy mikrosekundy. Działa z Duration.ofSeconds, ofMillis, ofMinutes itp.
Powiązana dokumentacja
Dowód