java并发之TimeUnit,代替 TimeUnit.sleep()

:2019年08月27日 xiaojin21cen
分享到:

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  
    }  }
[我要纠错]
文:宋聪乔&发表于江苏
关键词: java 发之 TimeUnit 代替 TimeUnit.sleep

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:java并发之TimeUnit,代替 TimeUnit.sleep()

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3南京思必达教育科技有限公司版权所有

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳