TimeUnit是 Java 中的一个枚举类,位于 java.util.concurrent 包下,表示不同时间单位的枚举类型。它用于在并发编程中统一处理时间延迟、超时以及时间单位转换的问题,使得与时间相关的操作更加简洁和易读。
1.常用的时间单位
NANOSECONDS: 纳秒(1 秒 = 10^9 纳秒);
MICROSECONDS: 微秒(1 秒 = 10^6 微秒);
MILLISECONDS: 毫秒(1 秒 = 10^3 毫秒);
SECONDS: 秒;
MINUTES: 分钟(1 分钟 = 60 秒);
HOURS: 小时(1 小时 = 60 分钟);
DAYS: 天(1 天 = 24 小时)。
2.枚举常量与方法
时间单位之间的转换
(1)toMillis(long d)
将时间从当前单位转换为毫秒
|
long millis = TimeUnit.SECONDS.toMillis(2); // 2 秒转为毫秒 System.out.println(millis); // 输出 2000 |
(2)toSeconds(long d)
将时间从当前单位转换为秒
|
long seconds = TimeUnit.MILLISECONDS.toSeconds(5000); // 5000 毫秒转为秒 System.out.println(seconds); // 输出 5 |
(3)toNanos(long d)
将时间从当前单位转换为纳秒
|
long nanos = TimeUnit.MILLISECONDS.toNanos(1); // 1 毫秒转为纳秒 System.out.println(nanos); // 输出 1000000 |
(4)convert(long sourceDuration, TimeUnit sourceUnit)
将指定时间和单位转换为目标时间单位。
|
long minutes = TimeUnit.MINUTES.convert(5, TimeUnit.HOURS); // 5 小时转为分钟 System.out.println(minutes); // 输出 300 |
(5)sleep(long timeout, TimeUnit unit)
使当前线程休眠指定的时间,单位由 TimeUnit 决定
|
try { // 使当前线程休眠 2 秒 TimeUnit.SECONDS.sleep(2); System.out.println("Slept for 2 seconds"); } catch (InterruptedException e) { e.printStackTrace(); } |
3.示例
|
import java.util.concurrent.*; public class TimeUnitExample { public static void main(String[] args) { ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); Runnable task = () -> { System.out.println("Task executed at: " + System.currentTimeMillis()); }; // 延迟 1 秒后执行任务,然后每 2 秒执行一次 scheduler.scheduleAtFixedRate( task, 1, 2, TimeUnit.SECONDS ); } } |
Java-TimeUnit&spm=1001.2101.3001.5002&articleId=145909105&d=1&t=3&u=18395006d4314827a0c415ec6681ebb3)
720

被折叠的 条评论
为什么被折叠?



