java线程中的notifyAll唤醒操作
注意:
java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指定对象一旦唤醒成功。则会立即加入线程的资源争夺中去。
例如:
package TestThread.ThreadSynchronized;public class TestWaitAll {public static void main(String[] args) {Test1 test1 = new Test1();Thread t = new Thread(test1, "线程1");Thread t1 = new Thread(test1, "线程2");Thread t2 = new Thread(test1, "线程3");Test2 test2 = new Test2(test1, "唤醒线程");t.start();t1.start();t2.start();try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch block e.printStackTrace();}test2.start();} }class Test1 implements Runnable {public void run() {synchronized (this) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "当前没有被执行到!");}} }class Test2 extends Thread {private Test1 test1;String name;public Test2(Test1 test1, String name) {super(name);this.name = name;this.test1 = test1;}public void run() {synchronized (test1) {test1.notifyAll();// 针对当前对象执行唤醒所有线程的操作System.out.println(Thread.currentThread().getName() + ":唤醒线程执行成功!");}} }
执行结果为:
转载于:https://www.cnblogs.com/chaiyesong/p/6610110.html
java线程中的notifyAll唤醒操作相关推荐
- java notifyall 唤醒顺序_Java线程中的notifyAll唤醒操作(推荐)
注意: java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指 ...
- java 线程 获取消息_获取java线程中信息
怎样获取java线程中信息? 在进行多线程编程中,比较重要也是比较困难的一个操作就是如何获取线程中的信息.大多数人会采取比较常见的一种方法就是将线程中要返回的结果存储在一个字段中,然后再提供一个获取方 ...
- java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?
java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...
- java线程中join方法的简单讲解
一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并发执行变为串行执行.具体看代码: public class Test {public static void main ...
- Java线程中,Blocked,Wait,以及TIMED_WAIT的区别
根据jdk1.6的api,java的Thread类,定义了六个状态: 线程状态.线程可以处于下列状态之一: NEW 至今尚未启动的线程处于这种状态. RUNNABLE 正在 Java 虚拟机中执行的线 ...
- Java线程中sleep()、wait()和notify()、suspend()和resume()、yield()、join()、interupt()的用法和区别
从操作系统的角度讲,os会维护一个ready queue(就绪的线程对列).并在某一时刻CPU只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够好 ...
- java线程中的常用方法_[多线程] 线程中的常用方法-最详细
线程中常用的方法 1.public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2.public void run() 如果该线程是使用独立的 Runna ...
- java中线程死锁及避免_如何避免Java线程中的死锁?
java中线程死锁及避免 如何避免Java中的死锁? 是Java面试中最受欢迎的问题之一,也是本季多线程的风格,主要是在高层提出,并带有很多后续问题. 尽管问题看起来很基础,但是一旦您开始深入研究,大 ...
- 如何避免Java线程中的死锁?
如何避免Java死锁? 是Java面试中最受欢迎的问题之一,也是本季多线程的风格,主要是在高层提出,并带有很多后续问题. 尽管问题看起来很基础,但是一旦您开始深入研究,大多数Java开发人员就会陷入困 ...
最新文章
- python数据分析基础 余本国_Python数据分析基础
- 只需4秒,这个算法就能鉴别你的LV是真是假
- 本地应用 v-for 指令
- Data Geekery发布了Java ORM工具jOOQ的3.9.0版,用于构建类型安全查询
- vue 监听表格里的数据变化_vue中监听数据变化 watch
- bat批处理(二):%0 %1——给批处理脚本传递参数
- 050_Unicode字符官方标准一
- su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
- jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server
- 【Pytorch神经网络理论篇】 14 过拟合问题的优化技巧(一):基本概念+正则化+数据增大
- 电脑屏幕卡住了按什么都没反应_手机突然“死机”了关机也不行,怎么按都没反应,怎么办?...
- 中国移动wlan优化app-截图
- sublime text 配置
- Java1.7ConcurrentHashMap类源码解析
- windows ios android的架构_什么便签备忘录软件横跨Windows、iOS和Android - 学显
- 使用独立PID namespace防止误杀进程
- 前端开发必备之MDN文档
- 农夫山泉做起“烧水工,熟水市场的魅力究竟有多大?
- acorr_ljungbox(data, lags = 1)报错:ufunc 'isnan' not supported for the input types, and the inputs cou
- 病毒不断变异,我们如何防护?
热门文章
- C#通过属性名字符串获取、设置对象属性值
- 【Oracle】Python 连接Oracle 数据库
- [Linux C]递归遍历指定目录下的子目录和文件
- IP分片和TCP分段的区别
- JAVA进阶day05包和权限
- Taro+react开发(32) Please use the ‘new‘ operator, this DOM object constructor cannot be called as a fu
- react学习(31)----react父传子
- [html] 写一个垂直的三栏布局,第一栏固定顶部,中间铺满,第三栏固定底部
- [css] 你是怎么设计css sprites(精灵图)的?有哪些技巧?
- [css] 能不能使用纯css使你的浏览器卡死?怎么实现?