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方法的包装,实现是一样的,只是多了时间单位转换和验证。
(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