java notifyall 唤醒顺序_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() + ":唤醒线程执行成功!");
}
}
}
执行结果为:
以上所述是小编给大家介绍的Java线程中的notifyAll唤醒操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!
java notifyall 唤醒顺序_Java线程中的notifyAll唤醒操作(推荐)相关推荐
- java迭代器删除元素_java迭代器中删除元素的操作
我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...
- java主线程捕获子线程中的异常
java主线程捕获子线程中的异常 参考文章: (1)java主线程捕获子线程中的异常 (2)https://www.cnblogs.com/jpfss/p/10272726.html (3)https ...
- java线程中的notifyAll唤醒操作
注意: java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指 ...
- java线程interrupt用法_Java线程中interrupt那点事 | 学步园
1.先看一下例子程序: import java.io.IOException; import java.net.ServerSocket; import javax.rmi.CORBA.Tie; /* ...
- java 线程 状态 图_Java线程中的生命周期和状态控制图文详解
这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...
- java线程唤醒与等待_Java线程的等待与唤醒
生产者和消费者必须使用同步代码块包裹起来,保证等待和唤醒只能有一个执行,同步使用的锁对象必须保证唯一 Thread中重要方法 void wait() 在其他线程调用此对象的notify()方法或not ...
- java 限时线程_Java线程中的七种状态
新建状态(New) 当用new操作符创建一个线程后, 例如new Thread(r),此时线程处在新建状态. 当一个线程处于新建状态时,线程中的任务代码还没开始运行. 就绪状态(Runnable) 也 ...
- java runnable 异常_JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- 线程java买火车票_Java线程中卖火车票问题的深入讲解
用java代码模拟卖100张火车票问题:四个售票窗口同时售票且不能卖出同一张火车票. 代码如下. package lesson; public class demo1 { public static ...
最新文章
- vue-threeJS数据驱动的三维图形可视化
- 使用awk获得java进程号,获取进程号并赋值判断进程状态
- 迪杰斯特拉算法(Dijkstra)证明
- lombok依赖_为什么有些公司不让用 Lombok ?不要问,自己看吧
- 超美响应式自适应引导页带音乐播放器源码
- Free Mybatis plugin
- Linux(Ubuntu/CentOS)安装splunkforwarder步骤
- 【VUE】npm run dev 报错 spawn cmd ENOENT
- 通用的流氓软件手动清理方法
- 蚂蚁金服CTO程立:创新发展数字时代金融关键技术
- 打字游戏之主界面实现
- 记录--Spyder打开时出现“An error occurred while starting the kernel“
- mathtype公式减号变短格式重置调整
- Vue+Vant制作单选全选全不选以及删除按钮van-checkbox
- 字节跳动2020届秋招笔试题
- 自媒体视频如何消重?批量处理去重消重去水印去logo软件企鹅号视频不重复必学的消重技巧...
- 信号和电源隔离的有效设计技术
- 啊,CET6 2021年
- 【idea】如何设置默认的JDK
- 计算机专业的swot分析图,计算机专业学生个人SWOT分析示例.doc
热门文章
- mybatis调用mysql存储过程_秒会mybatis调用存储过程(MySQL)
- C++面试题-面向对象-多态性与虚函数
- java线程集合点_Java多线程学习笔记(三) 甚欢篇
- 你了解的工厂模式可能有误
- 公有云、私有云、混合云的区别比较
- ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档
- wordpress在Linux nginx下权限设置
- 烂泥:学习ssh之ssh密钥随身携带
- linux下node-webkit安装vlc插件
- 将Office2010版EXCEL文件保存为2007版.XLS文件格式体积巨增解决方法