JUC(五)——TimeUnit工具类

x33g5p2x  于2021-09-24 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(251)

前言

在java.util.concurrent开发包里面提供有一个TimeUnit类,这个类单独看它的描述是一个时间单元类。该类是一个枚举类,这也是juc开包里面唯一的一个枚举类。

public enum TimeUnit {}

这个类之中支持的时间颗粒度有:

TimeUnit.DAYS          //天
TimeUnit.HOURS         //小时
TimeUnit.MINUTES       //分钟
TimeUnit.SECONDS       //秒
TimeUnit.MILLISECONDS  //毫秒
TimeUnit.NANOSECONDS  //纳秒

常用的功能如下:

一、延时控制(进行休眠控制)

public class SleepDemo {
    public static void main(String[] args) {
        //=============================休眠传统的写法==========================
        new Thread(() -> {
            try {
                Thread.sleep(5);
                System.out.println("传统延时完成了");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        //=============================休眠TimeUnit写法==========================
        new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(5);
                System.out.println("TimeUnit延时完成了");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}

发现TimeUnit可以实现更加精确的时间处理操作。

二、时间颗粒度转换

在TimeUnit里面最为重要的特点是可以方便的进行各种时间单位的转换,它提供了一个convert()方法。

// sourceDuration long类型时间数字
// sourceUnit 目标的转换类型
public long convert(long sourceDuration,TimeUnit sourceUnit)
1、范例:转换一小时为毫秒
long time = TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS);
System.out.println("1小时转为毫秒:"+time);

2、范例:3天后的日期
public class ConvertDemo {
    public static void main(String[] args) {
        long time = TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS);
        System.out.println("1小时转为毫秒:"+time);

        //三天后的日期
        long time2 = TimeUnit.MILLISECONDS.convert(3, TimeUnit.DAYS);
        System.out.println("3天转为毫秒:" + time2);
        long threeTime = System.currentTimeMillis() + time2; //当前时间的毫秒数+3天后的毫秒数
        System.out.println("3天后的日期:" + new Date(threeTime));
        System.out.println("3天后的日期:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(threeTime)));
    }
}

相关文章