前言
TimeUnit是java.util.concurrent包下的一个类名 主要功能是暂停线程的操作 与Thread.sleep()一样的功能都是暂停线程
- TimeUnit.SECONDS.sleep()这个方法可以精确到任意时间,指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS
- Thread.sleep()参数只能是毫秒,只可以精确到毫秒数
1. 源码
枚举变量主要有(参数选择主要有) 很有可读性
| 变量 | 意思 |
|---|
| NANOSECONDS | 毫微秒 | | MICROSECONDS | 微秒 | | MILLISECONDS | 毫秒 | | SECONDS | 秒 | | MINUTES | 分钟 | | HOURS | 小时 | | DAYS | 天 |
查看其源码 在暂停时间方面都有很高的精确性 转换时间以及验证
public void sleep(long timeout) throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
而且可以指定一些枚举变量 每一部分枚举变量都有其方法 参数多选择多 比如下方的分钟
public long toSeconds(long duration) {
long s, m;
if ((s = scale) <= SECOND_SCALE)
return (s == SECOND_SCALE) ? duration : duration / secRatio;
else if (duration > (m = maxSecs))
return Long.MAX_VALUE;
else if (duration < -m)
return Long.MIN_VALUE;
else
return duration * secRatio;
}
2. 代码实战
通过结合线程进程的操作 暂停该线程,将其挂起,可以运用该代码 指定暂停一秒,将其挂起
TimeUnit.MINUTES.sleep(1);
3. 代码对比
与Thread.sleep()一样的功能都是暂停线程 但是TimeUnit.SECONDS.sleep()更具有可读性
Thread.sleep()只是精确到毫秒,参数选择也只有毫秒数,可读性低,但调用都是同样功能,而TimeUnit.SECONDS.sleep()参数选择多,枚举变量的参数具体可查看上方
Thread.sleep()代码实列比如 Thread.sleep(5*60*1000);这样比较有可读性,但乘起来可读性较低
|