java notifyall_Java Thread notifyAll()方法
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 个群。
java notifyall_Java Thread notifyAll()方法相关推荐
- java 集合notifyall,java.lang.Object.notifyAll()方法实例
全屏 java.lang.Object.notifyAll()唤醒正在等待此对象的监视器上的所有线程.通过调用wait方法的对象的监视器上的一个线程等待. 该唤醒线程将不能继续进行,直到当前线程放弃此 ...
- java threadgourp_Java Thread getThreadGroup()方法
Java Thread getThreadGroup()方法 java.lang.Thread.getThreadGroup() 方法返回此线程所属的线程组.它返回null,如果该线程已经死亡(停止) ...
- Java多线程中notifyAll()方法使用教程
简介 本文将承接<Java多线程wait()和notify()系列方法使用教程>,结合代码实例,补充讲解下notifyAll()方法的作用以及使用时需要注意的地方. 一.notifyAll ...
- java setdaemon_Java Thread setDaemon()方法
Thread类的setDaemon()方法用于将线程标记为守护程序线程或用户线程. 它的生命依赖于用户线程,即当所有用户线程都消亡时,JVM会自动终止该线程.必须在线程启动之前调用它. 如果在声明线程 ...
- java suspend_Java Thread suspend()方法
Thread类的suspend()方法使线程无法运行到等待状态.如果要停止线程执行并在发生特定事件时再次启动,则使用此方法. 此方法允许线程暂时停止执行. 可以使用resume()方法恢复挂起的线程. ...
- java thread yield()_Java Thread yield()方法
Java Thread yield()方法 java.lang.Thread.yield() 方法使当前执行的线程对象来暂停并允许其他线程执行. 1 语法 public static void yie ...
- java thread.notify,Java Thread notify()方法
Java Thread notify()方法 java.lang.Thread.notify() 方法用于唤醒单个线程.此方法仅针对正在等待特定对象的一个线程给出通知.如果我们使用notify() 方 ...
- java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
(原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...
- 为什么wait、notify、notifyAll方法定义在Object中而不是Thread类中
多线程概述 Java是一个支持多线程的开发语言,多线程并发执行任务可以充分利用CPU资源,提高多任务并发执行效率(注意区分:多线程并不会加快任务的执行速度,而是可以充分利用多核CPU让线程轮流进行工作 ...
最新文章
- SNMP协议5种报文
- IIS6.0限制上传文件大小的解决办法
- 计算机的收获初一作文,初一关于收获的作文
- Watch out for these 10 common pitfalls of experienced Java developers architects--转
- vue的diff 算法
- jdk 9和jdk8_JDK 9是某些功能的终结
- Linux下Reids的安装和使用
- SpringCloud工作笔记087---SpringBoot启动报错:IDEA 错误: 找不到或无法加载主类 解决方法_connected to the target VM, address:
- 分期手续费转换为年化利率
- GD32F103使用串口DMA收+发 信息(无中断)
- Odin - Inspector and Serializer 学习笔记总结
- 加速器在模拟器中的尝试
- python正态分布函数_使用Python实现正态分布、正态分布采样
- 使用excel、python、tableau对招聘数据进行数据处理及可视化分析
- [USACO] Team Tic Tac Toe
- 2022.11.24
- matlab频率域滤波器,频率域滤波的MATLAB设计与实现_课程设计
- ios 系统状态栏样式修改_iOS_状态栏字体颜色修改(完美解决)
- 集合相关题目0927
- 【数据库系统工程师】6.4数据仓库和数据挖掘基础知识