首先TimeUnit类是java.util.concurrent包下的一个类
该类的出现主要是提供了可读性比较好的线程暂停操作,一般情况下使用其来代替Thread.sleep()。
是因为Thread的sleep方法存在这一个潜在的问题,就是代码的可读性太差。
我们先来简单的感受一下:
Thread.sleep(2400000)
可能在上面的代码中,一般人并不能直接看出这个线程究竟等待了多长时间,当然指的是一般人哈。。。
如果我们写成下面这个样子
Thread.sleep(4*60*1000)
可读性可能会好一点,最起码我们知道了是多少分,但是这还不是最好的。
OK,TimeUnit类的出现就解决了这个问题。
该类通过指定DAYS、HOURS、MINUTES、SECONDS、MILLIISECONDS 和 NANOSECONDS。如果使用TimeUnit类实现 sleep 4分钟就是这样的:
TimeUnit.MINUTES.sleep(4);
一目了然!!我们还可以使用秒、分、小时级别来暂停线程。
但是该类不仅有线程睡眠这一种方法,还有转换时间单位的方法:
// 关于秒的常用方法
TimeUnit.SECONDS.toMillis(1); // 将1秒转换为毫秒
TimeUnit.SECONDS.toMinutes(60); // 将60秒转换为分钟数
TimeUnit.SECONDS.sleep(5); // 线程睡眠5秒
TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES); // 一分钟转换为秒数
TimeUnit.DAYS // 日的工具类
TimeUnit.HOURS // 时的工具类
TimeUnit.MINUTES // 分的工具类
TimeUnit.SECONDS // 秒的工具类
TimeUnit.MILLISECONDS // 毫秒的工具类
该类在使用上很好的诠释的Java的枚举思想。