注意:

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唤醒操作(推荐)相关推荐

  1. java迭代器删除元素_java迭代器中删除元素的操作

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...

  2. java主线程捕获子线程中的异常

    java主线程捕获子线程中的异常 参考文章: (1)java主线程捕获子线程中的异常 (2)https://www.cnblogs.com/jpfss/p/10272726.html (3)https ...

  3. java线程中的notifyAll唤醒操作

    注意: java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指 ...

  4. java线程interrupt用法_Java线程中interrupt那点事 | 学步园

    1.先看一下例子程序: import java.io.IOException; import java.net.ServerSocket; import javax.rmi.CORBA.Tie; /* ...

  5. java 线程 状态 图_Java线程中的生命周期和状态控制图文详解

    这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...

  6. java线程唤醒与等待_Java线程的等待与唤醒

    生产者和消费者必须使用同步代码块包裹起来,保证等待和唤醒只能有一个执行,同步使用的锁对象必须保证唯一 Thread中重要方法 void wait() 在其他线程调用此对象的notify()方法或not ...

  7. java 限时线程_Java线程中的七种状态

    新建状态(New) 当用new操作符创建一个线程后, 例如new Thread(r),此时线程处在新建状态. 当一个线程处于新建状态时,线程中的任务代码还没开始运行. 就绪状态(Runnable) 也 ...

  8. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  9. 线程java买火车票_Java线程中卖火车票问题的深入讲解

    用java代码模拟卖100张火车票问题:四个售票窗口同时售票且不能卖出同一张火车票. 代码如下. package lesson; public class demo1 { public static ...

最新文章

  1. vue-threeJS数据驱动的三维图形可视化
  2. 使用awk获得java进程号,获取进程号并赋值判断进程状态
  3. 迪杰斯特拉算法(Dijkstra)证明
  4. lombok依赖_为什么有些公司不让用 Lombok ?不要问,自己看吧
  5. 超美响应式自适应引导页带音乐播放器源码
  6. Free Mybatis plugin
  7. Linux(Ubuntu/CentOS)安装splunkforwarder步骤
  8. 【VUE】npm run dev 报错 spawn cmd ENOENT
  9. 通用的流氓软件手动清理方法
  10. 蚂蚁金服CTO程立:创新发展数字时代金融关键技术
  11. 打字游戏之主界面实现
  12. 记录--Spyder打开时出现“An error occurred while starting the kernel“
  13. mathtype公式减号变短格式重置调整
  14. Vue+Vant制作单选全选全不选以及删除按钮van-checkbox
  15. 字节跳动2020届秋招笔试题
  16. 自媒体视频如何消重?批量处理去重消重去水印去logo软件企鹅号视频不重复必学的消重技巧...
  17. 信号和电源隔离的有效设计技术
  18. 啊,CET6 2021年
  19. 【idea】如何设置默认的JDK
  20. 计算机专业的swot分析图,计算机专业学生个人SWOT分析示例.doc

热门文章

  1. mybatis调用mysql存储过程_秒会mybatis调用存储过程(MySQL)
  2. C++面试题-面向对象-多态性与虚函数
  3. java线程集合点_Java多线程学习笔记(三) 甚欢篇
  4. 你了解的工厂模式可能有误
  5. 公有云、私有云、混合云的区别比较
  6. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档
  7. wordpress在Linux nginx下权限设置
  8. 烂泥:学习ssh之ssh密钥随身携带
  9. linux下node-webkit安装vlc插件
  10. 将Office2010版EXCEL文件保存为2007版.XLS文件格式体积巨增解决方法