java并发之TimeUnit,代替 TimeUnit.sleep()TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep().在很长一段时间里Thread的sleep()方法...
java并发之TimeUnit,代替 TimeUnit.sleep()
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep().
在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式。
Thread.sleep() 可读性差
Thread.sleep()方法:
Thread.sleep(2400000)1
对于大多数程序员来说这种写法的可读性很差的,你需要把毫秒转换成秒和分。
Thread.sleep(4*60*1000);1
这比前面那个例子已经好多了,但是仍然不是最好的,你注意到睡眠时间用毫秒,不容易猜出当前线程将等待4分钟。
TimeUnit类解决了这个问题,通过指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS。
用TimeUnit写线程睡眠4分钟:
TimeUnit.MINUTES.sleep(4); // sleeping for 4 minutes1
类似你可以采用秒、分、小时级别来暂停当前线程。你可以看到这比Thread的sleep方法的可读的好多了。
为什么对TimeUnit并不太熟悉
两个原因:
一是对比Thread.sleep(),TimeUnit不是很常用,
二是在它不在Thread类中,就像wait和notify同样不是在Thread中,反正这些需要一段时间才能被采用,并成为一个标准的方式。
TimeUnit 常用的颗粒度
TimeUnit.DAYS 日的工具类 TimeUnit.HOURS 时的工具类 TimeUnit.MINUTES 分的工具类 TimeUnit.SECONDS 秒的工具类 TimeUnit.MILLISECONDS 毫秒的工具类 TimeUnit.SECONDS.sleep( 5 ); //延时5秒12345678
**
TimeUnit 时间颗粒度转换 **
TimeUnit.SECONDS.toMillis(1) // 1秒转换为毫秒数 TimeUnit.SECONDS.toMinutes(60) // 60秒转换为分钟数 TimeUnit.SECONDS.sleep(5) // 线程休眠5秒 TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES) // 1分钟转换为秒数 12345
import java.util.concurrent.TimeUnit; public class Test { public static void main(String[] args) { //1天有24个小时 1代表1天:将1天转化为小时 System.out.println( TimeUnit.DAYS.toHours( 1 ) ); //结果: 24 //1小时有3600秒 System.out.println( TimeUnit.HOURS.toSeconds( 1 )); //结果3600 //把3天转化成小时 System.out.println( TimeUnit.HOURS.convert( 3 , TimeUnit.DAYS ) ); //结果是:72 } }
来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。
Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利
苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司
南京思必达教育科技有限公司版权所有 百度统计