Duration指定のThread.sleep
Durationを使って自己文書化された時間値を指定する。
コード比較
✕ 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)
);
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
自己文書化
Duration.ofSeconds(5)は曖昧さがありません。
単位安全
マイクロ秒をミリ秒として誤って渡すことがなくなります。
組み合わせ可能
Duration演算:plus()、multipliedBy()などが使えます。
旧来のアプローチ
ミリ秒指定
モダンなアプローチ
Duration指定
JDKバージョン
19
難易度
初級
JDKサポート
Duration指定のThread.sleep
利用可能
JDK 19(2022年9月)以降、広く利用可能
仕組み
Thread.sleep(Duration)は時間単位を明示的にします。5000がミリ秒かマイクロ秒か迷う必要はありません。Duration.ofSeconds、ofMillis、ofMinutesなどと組み合わせて使えます。
関連ドキュメント