java线程学习之Sleep方法
sleep方法是在线程中常用到的一个方法,它是一个静态方法。
sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。它可能会抛出中断异常
InterruptedException。它在Thread中定义的为:
/**
* Causes the currently executing thread to sleep (temporarily cease
* execution) for the specified number of milliseconds, subject to
* the precision and accuracy of system timers and schedulers. The thread
* does not lose ownership of any monitors.
*
* @param millis
* the length of time to sleep in milliseconds
*
* @throws IllegalArgumentException
* if the value of {@code millis} is negative
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
public static native void sleep(long millis) throws InterruptedException;
sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
在jdk的Thread中定义如下
/**
* Causes the currently executing thread to sleep (temporarily cease
* execution) for the specified number of milliseconds plus the specified
* number of nanoseconds, subject to the precision and accuracy of system
* timers and schedulers. The thread does not lose ownership of any
* monitors.
*
* @param millis
* the length of time to sleep in milliseconds
*
* @param nanos
* {@code 0-999999} additional nanoseconds to sleep
*
* @throws IllegalArgumentException
* if the value of {@code millis} is negative, or the value of
* {@code nanos} is not in the range {@code 0-999999}
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
public static void sleep(long millis, int nanos)
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);
}
例子一:
package com.song.test;
import java.util.Date;
public class TestThread01 extends Thread {
public static void main(String[] args) {
TestThread01 test = new TestThread01();
test.start();
}
@Override
public void run() {
long time1 = System.currentTimeMillis();
System.out.println("现在时间" + time1);
try {
sleep(2000);
long time2= System.currentTimeMillis();
System.out.println("休眠2秒后" + time2);
System.out.println(time2-time1);
sleep(1000,500000);
long time3 = System.currentTimeMillis();
System.out.println("休眠1000.5后:" + time3);
System.out.println(time3-time2);//因为时间精度为毫秒,会造成误差
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
}
}
}
运行结果为:

java线程学习之Sleep方法的更多相关文章
- java线程学习之join方法
join()方法表示一个线程要加入另一个线程,直到被加入的线程执行完毕. 这个概念不好理解的话看面这个例子 public class TestJoin { public static void mai ...
- java线程学习之wait方法
wait 等待方法是让线程进入等待队列,使用方法是 obj.wait(); 这样当前线程就会暂停运行,并且进入obj的等待队列中,称作“线程正在obj上等待”. 如果线程想执行 wait 方法,线程必 ...
- java线程学习之yield方法
yield方法是暂停当前正在执行的线程对象,并执行其他线程. 这是一个静态方法,一旦执行,它会使当前线程让出CPU.让出的cpu并不代表当前线程不执行了.当前线程让出CPU后,还会CPU资源的争夺,但 ...
- Java线程学习详解
线程基础 1. 线程的生命周期 1.1 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态.它保持这个状态直到程序 start() 这个线程. 1 ...
- 模拟做饭系统(java+线程中的join方法)
(一)项目框架分析 妈妈要去做饭,发现没有酱油,让儿子去买酱油,然后回来做饭. 根据面向对象的思想,有两个对象,妈妈和儿子 主要有两个方法: (一)没有线程控制(即儿子没有买酱油回来妈妈就做好饭了)+ ...
- 停止Java线程,小心interrupt()方法
来源:http://blog.csdn.net/wxwzy738/article/details/8516253 程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决 ...
- java 线程学习
转载:详见处http://lavasoft.blog.51cto.com/62575/27069 Java多线程编程总结 下面是Java线程系列博文的一个编目: Java线程:概念与原理 ...
- 学习java线程学习笔记
线程:代码执行的一个分支 主要作用是提高了效率,cpu能同时执行多个部分的代码. 线程的创建:两种方式 a.继承于thread类,重写run方法. b. ...
- JAVA线程sleep和wait方法区别
一. sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep 不会释放对象锁.由于没有释放对象锁,所以不能 ...
随机推荐
- 获取APP应用的包名信息
语言: python 3.7 需求:获取APP的包名和程序入口信息,以便在 Appium 脚本中配置 appPackage 和 appActivity 参数. 场景一 资源:已有APP应用的apk安装 ...
- golang 学习路径
目录 一 了解 go 二 入门教程 三 安装运行环境 & IDE(goland) 四 gotour 五 简易源码解析 六 开始写代码 七 学习框架 八 惯用法 九 调优 一 了解 go 谷歌一 ...
- postman自动化,测试脚本
//获取当前时间的时间戳 function getTimestamp(len=10) { // 如果需要自动获取则将此处代码放开 // var tmp = Date.parse( new Date() ...
- XSS 与 CSRF 跨站攻击
先做个名词解释: XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 看了估计也不清楚什么意思吧? 那么,详细 ...
- delphi 中实现当期日期 减去 若干小时的方法
假定当期日期为:2011-08-01 15:00:00 now - 1 :代表前一天的日期 返回值:2011-07-31 15:00:00 now - 1/3 :代表8小时前 ...
- [转]Jmeter + Grafana + InfluxDB 性能测试监控
https://www.cnblogs.com/yyhh/p/5990228.html Jmeter + Grafana + InfluxDB 性能测试监控 效果不错
- linux上查询网卡型号
- photoshop 修改pdf文件并保存为pdf
1.CTRL + O 打开要编辑的pdf文件 按住shift 选中每一页,点击确定. pdf文档每一页以一个psd文件显示在工作区, 分别进行修改, 2.批量修改同一个元素(比如加个图标) 在一页 ...
- SpringBoot2.0+Mybatis-Plus3.0+Druid1.1.10 一站式整合
SpringBoot2.0+Mybatis-Plus3.0+Druid1.1.10 一站式整合 一.先快速创建一个springboot项目,其中pom.xml加入mybatis-plus 和druid ...
- 9、Flutter 实现 生成二维码
1.加入依赖 在 pubspec.yaml 中 dependencies 节点下添加: dependencies: qr_flutter: ^ 2.引入代码 在需要细线二维码的 dart 类中引入依赖 ...