java notifyall_Java Thread notifyAll()方法[通俗易懂]

java notifyall_Java Thread notifyAll()方法[通俗易懂]Thread类的notifyAll()方法用于唤醒所有线程。此方法向特定对象的所有等待线程发出通知。如果使用notifyAll()方法并且多个线程正在等待通知,那么所有线程都会收到通知,但线程的执行将逐个执行,因为线程需要锁定,并且只有一个锁可用于一个对象。语法publicfinalvoidnotifyAll()返回此方法不返回任何值。异常IllegalMonitorStateExcepti…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Thread类的notifyAll()方法用于唤醒所有线程。此方法向特定对象的所有等待线程发出通知。

如果使用notifyAll()方法并且多个线程正在等待通知,那么所有线程都会收到通知,但线程的执行将逐个执行,因为线程需要锁定,并且只有一个锁可用于一个对象。

语法

public final void notifyAll()

返回

此方法不返回任何值。

异常

IllegalMonitorStateException :如果当前线程不是对象监视器的所有者,则抛出此异常。

示例

class Notify1 extends Thread

{

public void run()

{

synchronized(this)

{

System.out.println(“Starting of ” + Thread.currentThread().getName());

try {

this.wait();

}

catch (InterruptedException e) {

e.printStackTrace();}

System.out.println(Thread.currentThread().getName() + “…notified”);

}

}

}

class Notify2 extends Thread {

Notify1 notify1;

Notify2(Notify1 notify1)

{

this.notify1 = notify1;

}

public void run()

{

synchronized(this.notify1)

{

System.out.println(“Starting of ” + Thread.currentThread().getName());

try {

this.notify1.wait();

}

catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName() + “…notified”);

}

}

}

class Notify3 extends Thread

{

Notify1 notify1;

Notify3(Notify1 notify1)

{

this.notify1 = notify1;

}

public void run()

{

synchronized(this.notify1)

{

System.out.println(“Starting of ” + Thread.currentThread().getName());

// call the notifyAll() method

this.notify1.notifyAll();

System.out.println(Thread.currentThread().getName() + “…notified”);

}

}

}

public class JavaNotifyAllExp

{

public static void main(String[] args) throws InterruptedException

{

Notify1 notify1 = new Notify1();

Notify2 notify2 = new Notify2(notify1);

Notify3 notify3 = new Notify3(notify1);

// creating the threads

Thread t1 = new Thread(notify1, “Thread-1”);

Thread t2 = new Thread(notify2, “Thread-2”);

Thread t3 = new Thread(notify3, “Thread-3”);

// call run() method

t1.start();

t2.start();

Thread.sleep(100);

t3.start();

}

}

执行上面示例代码,得到以下结果:

Starting of Thread-1

Starting of Thread-2

Starting of Thread-3

Thread-3…notified

Thread-2…notified

Thread-1…notified

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196078.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中标麒麟neokylin linux advanced server 7update6 GUI server安装配置pyqt5运行环境说明「建议收藏」

    中标麒麟neokylin linux advanced server 7update6 GUI server安装配置pyqt5运行环境说明「建议收藏」直接安装python3.9.5,编译时会报Couldnotbuildthesslmodule!,python调用相关代码的时候,会报ModuleNotFoundError:Nomodulenamed’_ssl’,pip安装相关模块的时候,会报ERROR:Couldnotfindaversionthatsatisfiestherequirementssl(fromversions:none)装好系统后,先sudoyumupdate更新系统;这时,g.

    2022年8月10日
    46
  • css 去色_css按钮点击改变颜色

    css 去色_css按钮点击改变颜色有这么一个样式,可以在你实现无色和加色之间游刃有余。网站设计师在设计网页时,有时将一块图片设计成灰色,鼠标移上去,图片就有颜色。一般的逻辑是做两张图片,然后在鼠标上做图片切换事件。当然这种方法可以完美是实现, 不过有个小瑕疵,就是你要切一倍的图片(有色+无色)。下面介绍样式实现,可以减少一倍量的工作哦。//HTMLCSS.grayscaleimg{filter:g

    2022年10月6日
    2
  • eplan 2.7.3 win10激活码【最新永久激活】

    (eplan 2.7.3 win10激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    3.4K
  • jdk和jvm区别_java中集合和数组的区别

    jdk和jvm区别_java中集合和数组的区别最近翻看了java线程相关的东西,书中有一边专门讲到java内存模型,读完之后边回想起java虚拟机模型,那时心中便在思考java内存模型(以下简称jmm)和java虚拟机模型(以下简称jvm)之间的关系,下面将详细讲述。一jvm结构jvm的内部结构如下图所示,这张图很清楚形象的描绘了整个JVM的内部结构,以及各个部分之间的交互和作用。1ClassLoader(类加载器)就是…

    2025年9月11日
    4
  • sql语言是编程语言吗_sql属于编程语言吗

    sql语言是编程语言吗_sql属于编程语言吗1.SQL操作的是数据   SQL是数据库的查询语言,因而可以对系统数据产生持久化影响。在常规编程中,一个错误通常只会造成程序的crash或bug,修改并重新调试往往就可以了;而在SQL中,一个不小心就可能造成系统数据的破坏和丢失。常常有新手执行SQL时,不小心遗漏了DELETE或UPDATE语句中的WHERE子句,这往往是很大的麻烦。   因此,学习和使用SQL,一开始应该养成两个习惯:

    2022年10月5日
    2
  • python激活码2021(JetBrains全家桶)

    (python激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlKUKQYKZ5XE-eyJsa…

    2022年3月22日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号