java 时间类计时,Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用,...

Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用,

TimeUnit是一个时间单位枚举类,主要用于并发编程,时间单元表示给定粒度单元的时间持续时间,并提供实用程序方法来跨单元转换,以及在这些单元中执行计时和延迟操作。

1.时间单位换算

(1)支持的单位

TimeUnit.DAYS //天

TimeUnit.HOURS //小时

TimeUnit.MINUTES //分钟

TimeUnit.SECONDS //秒

TimeUnit.MILLISECONDS //毫秒

TimeUnit.MICROSECONDS //微秒

TimeUnit.NANOSECONDS //纳秒

(2)转换方法,例如:TimeUnit.HOURS 的转换源码

HOURS {public long toNanos(long d) { return x(d, C5/C0, MAX/(C5/C0)); }public long toMicros(long d) { return x(d, C5/C1, MAX/(C5/C1)); }public long toMillis(long d) { return x(d, C5/C2, MAX/(C5/C2)); }public long toSeconds(long d) { return x(d, C5/C3, MAX/(C5/C3)); }public long toMinutes(long d) { return x(d, C5/C4, MAX/(C5/C4)); }public long toHours(long d) { returnd; }public long toDays(long d) { return d/(C6/C5); }public long convert(long d, TimeUnit u) { returnu.toHours(d); }int excessNanos(long d, long m) { return 0; }

}

(3)使用举例

//小时转换为秒

long sec = TimeUnit.HOURS.toSeconds(1);

System.out.println("sec:" + sec);

// 另一种形式

long sec2 = TimeUnit.SECONDS.convert(1, TimeUnit.HOURS);

System.out.println("sec2:" + sec2);

输出结果:

sec:3600sec2:3600

2.计时操作

(1)例如:尝试获取锁50毫秒

Lock lock =...;if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ...

3.延迟操作

(1)比如当前线程延迟5s

TimeUnit.SECONDS.sleep(5);

4.TimeUnit 与 Thread sleep的区别

(1)TimeUnit sleep的原理

public void sleep(long timeout) throwsInterruptedException {if (timeout > 0) {long ms =toMillis(timeout);int ns =excessNanos(timeout, ms);

Thread.sleep(ms, ns);

}

}

TimeUnit sleep的底层调用了Thread.sleep。

(2)区别:TimeUnit sleep使用起来更方便,更易懂

比如:比如当前线程延迟5s:

使用Thread.sleep

Thread.sleep(5000);

// 或者

Thread.sleep(5*1000);

使用TimeUnit

TimeUnit.SECONDS.sleep(5);

相关文章暂无相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值