java.lang.Thread

java.util.concurrent.TimeUnit

(1)Thread.sleep() 和 TimeUnit.SECONDS.sleep()均实现线程暂停操作;

(2)TimeUnit枚举成员的方法提供更好的可读性,通常用来替换Thread.sleep();

例如同样实现线程暂停3分钟:

Thread.sleep(180000); 或 Thread.sleep(3*60*1000); //单位毫秒

TimeUnit.MINUTES.sleep(4);

(3)查看TimeUnit.SECONDS.sleep()源码,还是对Thread.sleep方法的包装,实现是一样的,只是多了时间单位转换和验证。

Thread.sleep() 和 TimeUnit.SECONDS.sleep()的关系

(4)Thread.sleep()是一个静态方法,暂停线程时它不会释放锁,该方法会抛出InterrupttedException异常(如果有线程中断了当前线程)。

TimeUnit.sleep()内部调用的Thread.sleep(),也会抛出InterruptException。

(5)TimeUnit 常用的颗粒度

TimeUnit.DAYS 日的工具类

TimeUnit.HOURS 时的工具类

TimeUnit.MINUTES 分的工具类

TimeUnit.SECONDS 秒的工具类

TimeUnit.MILLISECONDS 毫秒的工具类

 

TimeUnit.SECONDS.sleep( 5 ); //延时5秒

(6)TimeUnit 时间颗粒度转换

public long toMillis(long d)    //转化成毫秒

    public long toSeconds(long d)  //转化成秒

    public long toMinutes(long d)  //转化成分钟

    public long toHours(long d)    //转化成小时

    public long toDays(long d)     //转化天

例如:

TimeUnit.SECONDS.toMillis(1) // 1秒转换为毫秒数

TimeUnit.SECONDS.toMinutes(60) // 60秒转换为分钟数

TimeUnit.SECONDS.sleep(5) // 线程休眠5秒

TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES) // 1分钟转换为秒数

 

 

参考文献:

Thread.sleep() 和 TimeUnit.SECONDS.sleep() :https://www.cnblogs.com/jiuya/p/10832507.html

java并发之TimeUnit,代替 TimeUnit.sleep() : https://blog.csdn.net/xiaojin21cen/article/details/79479788

 

 

 

 

 

 

 

 

相关文章: