Java线程中的notifyAll唤醒操作(推荐)
短信预约 -IT技能 免费直播动态提醒
注意:
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() + ":唤醒线程执行成功!"); } }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Java线程中的notifyAll唤醒操作(推荐)
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
Java线程中的notifyAll唤醒操作(推荐)
注意:java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指定对象一旦唤醒成功。则会立即加入线程的资源
2023-05-31
如何在Java项目中实现多线程的阻塞与唤醒
如何在Java项目中实现多线程的阻塞与唤醒?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java线程的阻塞及唤醒 1. sleep() 方法: sleep(…毫
2023-05-31
Vue3中操作dom的四种方式保姆级教程(推荐!)
某些情况下,我们仍然需要直接访问底层 DOM 元素,下面这篇文章主要给大家介绍了关于Vue3中操作dom的四种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-17
Java线程中常用的操作有哪些
本篇内容介绍了“Java线程中常用的操作有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程的常用操作设置线程名字:setName()获
2023-06-30
2024-04-02
2023-07-07
Java 内存模型与原子性:探索多线程编程中的原子操作与内存屏障
Java 内存模型(JMM)定义了多线程编程中共享内存的访问规则,以及如何确保原子操作和内存可见性。本文探讨了 JMM 的核心概念,包括原子操作、内存屏障和 volatile 变量,并通过示例代码演示了它们的使用。
2024-02-04