一 是什么?

package com.aaa.threaddemo;
/*
* 多线程中的sleep方法?
* sleep 隶属于Thread的方法,顾名思义,让线程睡一会。
1 public static native void sleep(long millis) throws InterruptedException; 使用需要try catch,或者 声明一个异常,才能使用。
2 long 跟的时间单位是秒
3 会让线程进入阻塞状态
4 调用线程会【暂时让出指定时间】的执行权。让出CPU,但是监控状态依然保持着。
5 线程不会释放对象锁。
6 如果在睡眠期间其他线程调用了该线程的interrupt()方法中断了该线程,则该线程会在调用sleep方法的地方抛出InterruptedException异常而返回。
*/
public class ThreadRun {
public static void main(String[] args) throws InterruptedException {
Thread1 thread1 = new Thread1();
thread1.start();
//在thread1 阻塞的情况下,让其中断,会抛出异常 java.lang.InterruptedException
thread1.interrupt();
}
} class Thread1 extends Thread{
@Override
public void run() {
try {
System.out.println("1111");
// 让子线程休息一秒, 在一秒内线程让出CPU,此时thread1 进入阻塞状态。
// 一秒后函数正常返回,参与CPU的调度。获取到CPU资源进入到运行状态。
Thread1.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

二 验证sleep,监控状态依然保持。      原文 https://zhuanlan.zhihu.com/p/259158177

package com.aaa.threaddemo;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; /*
* 多线程中的sleep方法?
* sleep 隶属于Thread的方法,顾名思义,让线程睡一会。
1 public static native void sleep(long millis) throws InterruptedException; 使用需要try catch,或者 声明一个异常,才能使用。
2 long 跟的时间单位是秒
3 会让线程进入阻塞状态
4 调用线程会【暂时让出指定时间】的执行权。让出CPU,但是监控状态依然保持着。
5 线程不会释放对象锁。
6 如果在睡眠期间其他线程调用了该线程的interrupt()方法中断了该线程,则该线程会在调用sleep方法的地方抛出InterruptedException异常而返回。
*/
public class ThreadRun {
private static ReentrantLock lock = new ReentrantLock(); public static void main(String[] args) throws InterruptedException {
Thread thread1 = new Thread(new Runnable() {
public void run() {
//创建独占锁
lock.lock();
try {
System.out.println("线程1开始睡觉");
Thread.sleep(1000);
System.out.println("线程1结束睡觉"); } catch (InterruptedException e) {
e.printStackTrace();
}finally {
//解除锁
lock.unlock();
}
}
}); Thread thread2 = new Thread(new Runnable() {
public void run() {
//创建独占锁
lock.lock();
try {
System.out.println("线程2开始睡觉");
Thread.sleep(2000);
System.out.println("线程2结束睡觉"); } catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
}
}
}); thread1.start();
thread2.start();
}
}

多线程中sleep方法,简单介绍。的更多相关文章

  1. 使用Memcache在PHP中调试方法的介绍及应用

    使用Memcache在PHP中调试方法的介绍及应用 如果我们在网络开发中,特别是大访问量的web项目开发中,为了提高响应速度,减少数据查询运算,那么我们都会选用memcahce.首先我们必须要安装,接 ...

  2. InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。

    InputStreamReader 和 OutputStreamWriter类使用方法简单介绍. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是 ...

  3. 进程?线程?多线程?同步?异步?守护线程?非守护线程(用户线程)?线程的几种状态?多线程中的方法join()?

    1.进程?线程?多线程? 进程就是正在运行的程序,他是线程的集合. 线程是正在独立运行的一条执行路径. 多线程是为了提高程序的执行效率.2.同步?异步? 同步: 单线程 异步: 多线程 3.守护线程? ...

  4. Java中的wait方法 简单介绍。

    一 wait方法怎么用? package com.aaa.threaddemo; /* * 多线程中的wait方法? public final void wait() throws Interrupt ...

  5. iOS开发多线程篇 09 —NSOperation简单介绍

    iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...

  6. c# 中内部类的简单介绍 C#内部类

    最近在看java一方面的书籍,看到一个很奇怪的问题,java类中还可以再定义一个类,这种结构非常特殊!后来才发现我知识浅薄了,原来C#中也有内部类,之前都一直没有注意过这个语法结构! 使用内部类有这样 ...

  7. AJ学IOS(50)多线程网络之GCD简单介绍(任务,队列)

    AJ分享,必须精品 GCD简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 GCD是苹果 ...

  8. js中propertyIsEnumerable()方法使用介绍

    javascript的propertyIsEnumerable()方法使用介绍 概述 propertyIsEnumerable()用来检测属性是否属于某个对象的,如果检测到了,返回true,否则fal ...

  9. Java中的equals和==的区别以及几个常用的object中的方法简单的调试方法

    一.equals 1.equals:是Object类中的方法,只能判断引用类型 2.默认判断的是地址是否相等(判断两个参数是否是同一个对象),子类中往往重写该方法,用于判断内容(值)是否相等 二.== ...

随机推荐

  1. 【LeetCode】870. Advantage Shuffle 解题报告(Python)

    [LeetCode]870. Advantage Shuffle 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...

  2. 【LeetCode】435. Non-overlapping Intervals 解题报告(Python)

    [LeetCode]435. Non-overlapping Intervals 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemi ...

  3. 更快的Maven来了,我的天,速度提升了8倍!

    周末被 maven-mvnd 刷屏了,于是我也下载了一个 mvnd 体验了一把.虽然测试的数据都是基于我本地项目,不具备普适性和权威性,但也足以说明问题.它的测试结果远远超出我的预期,下面一起来看. ...

  4. C++函数参数的传递顺序

    C++编译器默认使用的是 __cdecl 模式,参数是通过栈传递的,因此是从右到左的传参顺序. int f(int a, int b, int c) { return 0; } int main(){ ...

  5. CS5202Capstone|CS5202芯片|CS5202芯片方案

    一.CS5202功能概述CS5202结合了DisplayPort输入接口和模拟RGB DAC输出接口.嵌入式单片机基于工业标准8051核心,适用于多个细分市场和显示器应用程序,如笔记本电脑.主板.台式 ...

  6. docker学习:docker三要素

    镜像 docker 镜像(image)就是一个只读的模板.镜像可以用来创建docker容器,一个镜像可以创建很多容器 容器 docker 利用容器(Container)独立运行的一个或者一组应用.容器 ...

  7. 【03】SpringBoot2核心技术-核心功能—数据访问_单元测试_指标监控

    3.数据访问(SQL) 3.1 数据库连接池的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.spring ...

  8. 如何优雅的设置UI库组件的属性?

    UI库提供了很多组件,组件又带有很多属性,有一些常用属性我们可以记住并且手撸,但是有些不常用的属性,或者需要设置多个属性,这样的情况下写起来就麻烦了,有时候还要打开帮助文档看看属性是怎么设定的,需要设 ...

  9. python 面向对象:类方法&静态方法

    一.类方法 1.1 概念和语法说明 类方法就是针对类对象定义的方法.在类方法内部可以直接访问类属性或者调用其他的类方法 语法如下: @classmethod def 类方法名(cls): pass 说 ...

  10. Linux设置新的服务器登录端口

    root用户登录服务器 22端口修改为22525,22端口也打开,以防新端口设置有问题,登录不上服务器 向防火墙中添加修改的端口 systemctl start firewalld firewall- ...