线程休眠 java_JAVA多线程07-基础篇-线程休眠sleep()
本节摘要: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()相关推荐
- interupt java_Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
概要 1. interrupt()说明 在介绍终止线程的方式之前,有必要先对interrupt()进行了解. Interrupts this thread. Unless the current th ...
- terminated 线程_Java【多线程系列】JUC线程池—2. 原理(二)、Callable和Future
在"Java多线程系列--"基础篇"01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态.线程池也有5种状态:然而 ...
- 【Java_多线程并发编程】基础篇—线程状态及实现多线程的两种方式
1.Java多线程的概念 同一时间段内,位于同一处理器上多个已开启但未执行完毕的线程叫做多线程.他们通过轮寻获得CPU处理时间,从而在宏观上构成一种同时在执行的假象,实质上在任意时刻只有一个线程获得C ...
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
概要 本章,会对线程的interrupt()中断和终止方式进行介绍.涉及到的内容包括: 1. interrupt()说明 2. 终止线程的方式 2.1 终止处于"阻塞状态"的线 ...
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括: 1. 线程优先级的介绍 2. 线程优先级的示例 3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/s ...
- 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用
前言: android线程通讯机制是android应用开发的基础课程,对于很多初学android的朋友可能还没有完全理解,所以,今天我就做一下知识小结吧. 一.线程安全 可能有java基本的朋友都知道 ...
- linux线程基础篇----线程同步与互斥
linux线程基础----线程同步与互斥 一.同步的概念 1.同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备 ...
- JAVA从入门到精通------基础篇------线程
1.什么是进程 程序是静止的,只有真正运行时的程序才能被称为进程 举个例子,我们的每一个软件就是一个进程 单核CPU在任何时间点上,只能运行一个进程,宏观并行,微观串行 2.什么是线程 线程,又称轻量 ...
- Java中的线程基础篇-线程基本概念
线程的概念.创建方式.生命周期.优缺点 一.基础知识 1. 进程.线程.协程 1.1 进程 1.2 线程 1.3 协程 2. 串行.并发.并行 2.1 串行 2.2 并发 2.3 并行 二.线程的创建 ...
最新文章
- 将Project的内容导出成单独的XPO文件
- 让你的数据离CPU更近一些
- AXM-Net:用于行人检测的跨模式上下文注意力网络
- VC6工程升级VS2013遇到的问题
- 基于Python技术栈的算法落地踩坑
- tensorflow随笔-随机数
- div背景透明_为什么css3实现background-image和半透明边框这么麻烦
- ElasticSearch原理
- Windows下进程通信的几种方式介绍
- saltstack event配合websocket客户端实时推送结果
- C++标准转换运算符:dynamic_cast
- 科来网络分析器11下载地址
- 华为账号不能连接服务器怎么回事,云服务器连接不了是什么原因_云服务器连不上是为什么_华为云...
- Sketch 的基本操作(一)
- C语言路漫漫,其修远兮
- 【论文阅读】SCRDet++
- K8S集群中Pod资源数据丢包排查思路
- 什么是互动触摸屏?它有用途是什么?
- background-attachment: fixed 在iphone设备失效
- 看电影学英语--欧美经典电影