java TimeUnit vs Thread.sleep的用法对比
来源:互联网 发布:中兴通开票软件下载 编辑:程序博客网 时间:2024/06/05 22:30
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep()。在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它。Thread.sleep()是一个静态方法,暂停线程时它不会释放锁,该方法会抛出InterrupttedException异常(如果有线程中断了当前线程)。Thread.sleep()是一个重载方法,可以接收长整型毫秒和长整型的纳秒参数,这样对程序员造成的一个问题就是很难知道到底当前线程是睡眠了多少秒、分、小时或者天。看看下面这个Thread.sleep()方法:
Thread.sleep(2400000)
粗略一看,你能计算出当前线程是等待多长时间吗?可能有些人可以,但是对于大多数程序员来说这种写法的可读性还是很差的,你需要把毫秒转换成秒和分,让我们来看看另外一个例子,这个例子比前面那个例子可读性稍微好一点:
Thread.sleep(4*60*1000);
这比前面那个例子已经好多了,但是仍然不是最好的,你注意到睡眠时间用毫秒,不容易猜出当前线程将等待4分钟。TimeUnit类解决了这个问题,通过指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS。java.utils.concurrent。TimeUnit 是Java枚举应用场景中最好的例子之一,所有TimeUnit都是枚举实例,让我们来看看线程睡眠4分钟用TimeUnit是如何使用的。
TimeUnit.MINUTES.sleep(4);
类似你可以采用秒、分、小时级别来暂停当前线程。你可以看到这比Thread的sleep方法的可读的好多了。记住TimeUnit.sleep()内部调用的Thread.sleep()也会抛出InterruptException。你也可以查看JDK源代码去验证一下。下面是一个简单例子,它展示如果使用TimeUnit.sleep()方法。
public class TimeUnitTest {public static void main(String args[]) throws InterruptedException {System.out.println(“Sleeping for 4 minutes using Thread.sleep()”);Thread.sleep(4 * 60 * 1000);System.out.println(“Sleeping for 4 minutes using TimeUnit sleep()”);TimeUnit.SECONDS.sleep(4);TimeUnit.MINUTES.sleep(4);TimeUnit.HOURS.sleep(1);TimeUnit.DAYS.sleep(1);}}
除了sleep的功能外,TimeUnit还提供了便捷方法用于把时间转换成不同单位,例如,如果你想把秒转换成毫秒,你可以使用下面代码:
TimeUnit.SECONDS.toMillis(44)
它将返回44,000
注意:
1毫秒=1000微秒
1微秒=1000纳秒
1纳秒=1000皮秒
转载自:http://www.strutshome.com/index.php/archives/567
0 0
- java TimeUnit vs Thread.sleep的用法对比
- java中TimeUnit vs Thread.sleep的用法对比
- TimeUnit类中的sleep() 和Thread.sleep()
- Prefer TimeUnit Sleep over Thread.Sleep
- Thread.sleep还是TimeUnit.SECONDS.sleep
- Thread.sleep()的用法
- Java开发中,优先使用TimeUnit类中的sleep()而不是Thread中的sleep()
- thread sleep 函数的用法
- 0013-TimeUnit的用法
- TimeUnit的用法
- Thread.Sleep(0) vs Sleep(1) vs Yeild 经典(虽然是C#的,但是有助于理解java的)
- Java Thread.sleep的InterruptedException
- Java中Thread.sleep()和Thread.currentThread.sleep()的区别
- No4.线程中断+Thread.sleep()的用法
- Thread.Sleep vs. Thread.CurrentThread.Join
- java Thread编程(二)sleep的使用
- java线程 Thread.sleep()的学习了解
- Java中的线程的休眠Thread.sleep()
- Oracle 使用 RMAN 复制数据库
- 是程序猿太懒还是测试人员有病
- 转)C++ stringstream介绍,使用方法与例子
- Matlab 中的cell类型
- Spring 3 MVC深入研究
- java TimeUnit vs Thread.sleep的用法对比
- 提升Android编译速度
- 笔记-xml-xsd:xsd中根据一个元素约束其他元素(不可行)
- 图片 二进制 转换
- C 文件加密
- OpenCV学习笔记(二):彩色图像取反
- web 开发遇到的问题
- android 如何加速./mk snod打包
- 基础练习1_闰年判断