代码对比
✕ 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 与其他 java.time API 无缝配合。
旧方式
毫秒
现代方式
Duration
自 JDK
19
难度
入门
JDK 支持
使用 Duration 的 Thread.sleep
可用
自 JDK 19 起广泛可用(2022 年 9 月)
工作原理
Thread.sleep(Duration) 使时间单位明确。不再需要猜测数字是毫秒、秒还是纳秒——Duration.ofSeconds(5) 一目了然。
相关文档