• 当前位置: 首 页 > 教育百科 > 其他 > 正文

    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
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证