本节摘要:sleep()功能介绍,sleep()用法示例

一、功能介绍

让当前线程(调用sleep()方法的线程)休息一会,即是让当前线程由运行状态进入到阻塞状态,进而使其他线程有机会继续执行任务。虽然使线程休眠,但是并不释放对象锁,所以说如果在同步块中使用sleep(),其他线程仍然无法获得执行权限。

注意:sleep()方法定义在Thread类中,会调用sleep(millis)这个本地方法,抛出InterruptedException异常,因此需要捕获该异常

二、代码示例

public class SleepDemo {

public static void main(String[] args) {

MyRunnable1 r = new MyRunnable1();

Thread t1 = new Thread(r, "t1");

Thread t2 = new Thread(r, "t2");

t1.start();

t2.start();

}

}

class MyRunnable1 implements Runnable {

@Override

public void run() {

synchronized (this) {

try {

for (int i = 0; i < 5; i++) {

System.out.println(Thread.currentThread().getName() + "--" + i);

/**

* t1,t2引用同一个对象锁,

* 线程在模2为0的时候会休眠10ms,但是没有释放对象锁,所以其他线程还需继续等待,并不会获得cpu的执行权

*/

if (i % 2 == 0) {

Thread.sleep(10);

}

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

程序输出:

t1--0

t1--1

t1--2

t1--3

t1--4

t2--0

t2--1

t2--2

t2--3

t2--4

三、结果说明

主线程中启动两个线程,这两个线程共享同一个Runnable实例。run方法是加锁方法,输出小于5的数,并在模2=0时休眠10ms。线程并没有交替执行,获得锁的线程执行结束后,另一个线程才能获取对象锁,进而执行。

四、总结

sleep()是静态方法,可以直接调用

sleep()方法使线程由运行状态转化为休眠阻塞状态

sleep()并不会释放对象锁

线程休眠 java_JAVA多线程07-基础篇-线程休眠sleep()相关推荐

  1. interupt java_Java多线程系列--“基础篇”09之 interrupt()和线程终止方式

    概要 1. interrupt()说明 在介绍终止线程的方式之前,有必要先对interrupt()进行了解. Interrupts this thread. Unless the current th ...

  2. terminated 线程_Java【多线程系列】JUC线程池—2. 原理(二)、Callable和Future

    在"Java多线程系列--"基础篇"01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态.线程池也有5种状态:然而 ...

  3. 【Java_多线程并发编程】基础篇—线程状态及实现多线程的两种方式

    1.Java多线程的概念 同一时间段内,位于同一处理器上多个已开启但未执行完毕的线程叫做多线程.他们通过轮寻获得CPU处理时间,从而在宏观上构成一种同时在执行的假象,实质上在任意时刻只有一个线程获得C ...

  4. Java多线程系列--“基础篇”09之 interrupt()和线程终止方式

    概要 本章,会对线程的interrupt()中断和终止方式进行介绍.涉及到的内容包括: 1. interrupt()说明 2. 终止线程的方式   2.1 终止处于"阻塞状态"的线 ...

  5. Java多线程系列--“基础篇”10之 线程优先级和守护线程

    概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括: 1. 线程优先级的介绍 2. 线程优先级的示例 3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/s ...

  6. 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用

    前言: android线程通讯机制是android应用开发的基础课程,对于很多初学android的朋友可能还没有完全理解,所以,今天我就做一下知识小结吧. 一.线程安全 可能有java基本的朋友都知道 ...

  7. linux线程基础篇----线程同步与互斥

    linux线程基础----线程同步与互斥 一.同步的概念 1.同步概念  所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备   ...

  8. JAVA从入门到精通------基础篇------线程

    1.什么是进程 程序是静止的,只有真正运行时的程序才能被称为进程 举个例子,我们的每一个软件就是一个进程 单核CPU在任何时间点上,只能运行一个进程,宏观并行,微观串行 2.什么是线程 线程,又称轻量 ...

  9. Java中的线程基础篇-线程基本概念

    线程的概念.创建方式.生命周期.优缺点 一.基础知识 1. 进程.线程.协程 1.1 进程 1.2 线程 1.3 协程 2. 串行.并发.并行 2.1 串行 2.2 并发 2.3 并行 二.线程的创建 ...

最新文章

  1. 将Project的内容导出成单独的XPO文件
  2. 让你的数据离CPU更近一些
  3. AXM-Net:用于行人检测的跨模式上下文注意力网络
  4. VC6工程升级VS2013遇到的问题
  5. 基于Python技术栈的算法落地踩坑
  6. tensorflow随笔-随机数
  7. div背景透明_为什么css3实现background-image和半透明边框这么麻烦
  8. ElasticSearch原理
  9. Windows下进程通信的几种方式介绍
  10. saltstack event配合websocket客户端实时推送结果
  11. C++标准转换运算符:dynamic_cast
  12. 科来网络分析器11下载地址
  13. 华为账号不能连接服务器怎么回事,云服务器连接不了是什么原因_云服务器连不上是为什么_华为云...
  14. Sketch 的基本操作(一)
  15. C语言路漫漫,其修远兮
  16. 【论文阅读】SCRDet++
  17. K8S集群中Pod资源数据丢包排查思路
  18. 什么是互动触摸屏?它有用途是什么?
  19. background-attachment: fixed 在iphone设备失效
  20. 看电影学英语--欧美经典电影

热门文章

  1. 如何选择天翼云云硬盘
  2. 一个计算机爱好者的不完整回忆(三十三)做过的软件
  3. php网络电视,高速度电视直播管理系统 v2.3 门户版
  4. java组织架构权限_关于权限系统和组织结构
  5. css修改代码,网站模板修改中常用到的CSS代码详解
  6. 2014版SEO工具集最新最全收集
  7. npm 编译慢_解决npm安装node-sass太慢及编译错误问题
  8. Apache Sqoop job 作业
  9. SpringBoot 整合 Netty
  10. 360浏览器window.open被拦截