java之TimeUnit.SECONDS.sleep()详细分析(全)
目录
- 前言
- 1. 源码
- 1.1 TimeUnit.SECONDS.sleep()
- 1.2 Thread.sleep()
- 2. 代码实战
- 3. 代码对比
前言
TimeUnit是java.util.concurrent包下的一个类名
主要功能是暂停线程的操作
与Thread.sleep()一样的功能都是暂停线程
- TimeUnit.SECONDS.sleep()这个方法可以精确到任意时间,指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS和NANOSECONDS
- Thread.sleep()参数可以如下:(可查看下面源码解释)
1. 源码
1.1 TimeUnit.SECONDS.sleep()
枚举变量主要有(参数选择主要有)
很有可读性
变量 | 意思 |
---|---|
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;elsereturn duration * secRatio;}
1.2 Thread.sleep()
对应的sleep()函数,查看其源码函数,主要有如下两个功能:
// 其设计的两个源码如下:/*
Millis -以毫秒为单位的睡眠时间长度
IllegalArgumentException millis的值是负数
InterruptedException 如果任何线程中断了当前线程。抛出此异常时,当前线程的中断状态将被清除。
*/
public static native void sleep(long millis) throws InterruptedException;/*
使当前正在执行的线程休眠(临时停止执行),休眠时间为指定的毫秒数加上指定的纳秒数,具体取决于系统计时器和调度器的精度和准确性。线程不会失去任何监视器的所有权
*//*
Millis 以毫秒纳为单位的睡眠时间长度
nanos 表示为0到999999 纳秒额外的睡眠时间
对应的异常表示为:如果millis的值为负值,或者nano的值不在0-999999的范围内
*/
public static void sleep(long millis, int nanos)//InterruptedException异常表示 如果任何线程中断了当前线程。抛出此异常时,当前线程的中断状态将被清除throws InterruptedException {if (millis < 0) {throw new IllegalArgumentException("timeout value is negative");}if (nanos < 0 || nanos > 999999) {throw new IllegalArgumentException("nanosecond timeout value out of range");}if (nanos >= 500000 || (nanos != 0 && millis == 0)) {millis++;}sleep(millis);}
2. 代码实战
通过结合线程进程的操作
暂停该线程,将其挂起,可以运用该代码
指定暂停一秒,将其挂起
TimeUnit.MINUTES.sleep(1);
3. 代码对比
与Thread.sleep()
一样的功能都是暂停线程
但是TimeUnit.SECONDS.sleep()
更具有可读性
Thread.sleep()
可读性低,但调用都是同样功能
而TimeUnit.SECONDS.sleep()
参数选择多,枚举变量的参数具体可查看上方
Thread.sleep()
代码实列比如
Thread.sleep(5*60*1000);
这样比较有可读性,但乘起来可读性较低
java之TimeUnit.SECONDS.sleep()详细分析(全)相关推荐
- gsm模块 java 录音_Android GSM驱动模块详细分析
Android的RIL驱动模块, 在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分,另有一 radiooptions可供自动或手动调 ...
- java中Integer.parseInt用法详细分析(全)
目录 前言 函数讲解 前言 将数字字符串转化成原生整型数据 属于java.lang.Integer 是原生类型整型的包裹类 函数讲解 1.parseInt(String s) 将字符串s转换为十进制的 ...
- java之Iterator迭代器用法详细分析(全)
前言 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小 单向移动 迭代: ...
- java程序的运行机制详细分析
转自:http://hi.baidu.com/suny_duan/blog/item/074f9afb09f08c9b58ee901b.html JVM(Java虚拟机)一种用于计算设备的规范,可用不 ...
- java之next()和nextLine()详细分析
目录 前言 实战代码 前言 两者都是获取其输入的字符串 但两者又有区别 next()只读取字符,直到遇到空格/Tab键/回车停止: nextLine()只读取字符以及前后的的空格/Tab键,直到遇到回 ...
- Java中的左移右移详细分析
<< public static void main(String[] args) {int i = -11;// 11 * 8System.out.println(Integer.toB ...
- java程序员二级_Java程序员认证模拟题及详细分析(2)
Java程序员认证模拟题及详细分析(2) 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 Java程序员认证模拟题及详细分析(1) 26. Give following class ...
- java消费者模式_基于Java 生产者消费者模式(详细分析)
生产者消费者模式是多线程中最为常见的模式:生产者线程(一个或多个)生成面包放进篮子里(集合或数组),同时,消费者线程(一个或多个)从篮子里(集合或数组)取出面包消耗.虽然它们任务不同,但处理的资源是相 ...
- HTTP头部解释,HTTP头部详细分析,最全HTTP头部信息
原文地址:HTTP头部解释,HTTP头部详细分析,最全HTTP头部信息 HTTP 头部解释 ====================================================== ...
最新文章
- 两款轻量级服务器 Http-server SimpleHTTPServer
- One Switch for Mac 一键切换系统各项功能
- 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆
- Android Framework常用工具及LOG调试方法
- 20200930 《计算感知》第1节课 笔记
- Mysql 8 group replication组复制集群单主配置图解
- python中反斜杠b_Python bytes 反斜杠转义问题解决方法
- java定义变量的输入_Terraform中输入变量
- 【原创】vegas提示NTDLL.DLL出错的解决办法
- 『初识C语言』语法入门详解
- 数据结构(树链剖分):BZOJ 4034: [HAOI2015]T2
- [Deprecated( please use panBy and panTo APIs )]
- 【例题】给定一个浮点格式(IEEE 754),有k位指数和n位小数,对于下列数,写出阶码E、尾数M、小数f和值V的公式。另外,请描述其位表示。
- 怎么锁定电脑屏幕_锁定流行趋势,信霆为你盘点3C数码配件中的人气单品
- 《UML系统分析与设计》习题答案
- 素数快速求法 -- 筛法求素数
- 跟我唱简谱v5.3 中文免费版
- 修改UEditor编辑器上传图片大小限制
- VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti
- Elasticsearch(Transport Client)常用操作