工具类TimeUnit

本文介绍了Java并发工具类TimeUnit,详细讲解了其在延迟程序和时间转换中的应用,以及常用的时间单位和方法。通过示例代码展示了如何提高程序的可读性,并讨论了时间单位转换的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近 项目中用到一些时间类转换的知识点, 作为一个爱学习的 猿人。我又找时间复习了一下这个类

最后更新时间:2021-01-25

简介

TimeUnit是一个枚举类, 位于java.util.concurrent包下。转化时间的细粒度, 提供了跨单元转换的实用方法。也可以 用来延时执行某段程序。

功能

延迟程序

  • 直接 上代码

  • public void sayHello() throws InterruptedException {
        // 这段代码 不难看出, 是让程序睡眠 一秒钟
        Thread.sleep(1000);
    
        // 这个是让程序 睡眠 一天
        Thread.sleep(8640000);
        
        System.out.println("Hello friend !");
    }
    
  • 时间短的时候, 还是比较容易看出来的。但是时间长了之后, 很难直接看出来

  • Java 官方, 也考虑到了这一点。

  •  public void sayHello() throws InterruptedException {
        // 程序睡眠 一分钟
        TimeUnit.MINUTES.sleep(1);
      
        // 程序睡眠 三天
        TimeUnit.DAYS.sleep(3);
      
        System.out.println("Hello friend !");
    }
    
  • 使用了工具类, 程序的可读性一下子 提升了

  • 当然 它的底层还是 Thread.sleep();

  • public void sleep(long timeout) throws InterruptedException {
        if (timeout > 0) {
            long ms = toMillis(timeout);
            int ns = excessNanos(timeout, ms);
            Thread.sleep(ms, ns);
        }
    }
    
    • 也从 项目代码中看到过 有朋友这样写的代码。

    • 每个人都有自己的一种习惯吧

    • 作者也想一天睡八个小时哎 (头秃)

    • public void everyday() throws InterruptedException {
          // 每天睡眠 八小时
          Thread.sleep(8 * 60 * 60 * 1000);
      }
      

时间转换

  • // 将一天转换成毫秒表示
    long time1 = TimeUnit.DAYS.toMillis(1);
    
    // 将一小时转换成分钟表示
    long time2 = TimeUnit.HOURS.toMinutes(1);
    
  • 高级别的时间单位 向低单位转换 还是比较方便的

  • 但是 从低单位转换成高单位 经测试 会向下取整

  • // 65分 转成 小时 = 1
    long time1 = TimeUnit.MINUTES.toHours(65);
    
    // 23小时 转成 天 = 0
    long time2 = TimeUnit.HOURS.toDays(23);
    

拓展

常用细粒度

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

常用方法

public long toMillis(long duration) //转化成毫秒
public long toSeconds(long duration) //转化成秒
public long toMinutes(long duration) //转化成分钟
public long toHours(long duration) //转化成小时
public long toDays(long duration) //转化天

其他的并不常用, 因此并没有写在这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值