(十四)Java-TimeUnit

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

        );

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值