Concurrency 初級

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
難易度
初級
Duration指定のThread.sleep
利用可能

JDK 19(2022年9月)以降、広く利用可能

Thread.sleep(Duration)は時間単位を明示的にします。5000がミリ秒かマイクロ秒か迷う必要はありません。Duration.ofSeconds、ofMillis、ofMinutesなどと組み合わせて使えます。

共有 𝕏 🦋 in