java thread.notify_Java Thread notify()方法
Thread类的notify()方法用于唤醒单个线程。 此方法仅为一个等待特定对象的线程提供通知。
如果使用notify()方法并且有多个线程正在等待通知,那么只有一个线程获得通知,而剩下的线程必须等待进一步的通知。
语法
public final void notify()
返回
此方法不返回任何值。
异常
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 notify() method
this.notify1.notify();
System.out.println(Thread.currentThread().getName() + "...notified");
}
}
}
public class JavaNotifyExp
{
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-1...notified
¥ 我要打赏
纠错/补充
收藏
下一篇:哥,这回真没有了
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
java thread.notify_Java Thread notify()方法相关推荐
- Java学习: wait和notify方法、ThreadLocal
wait方法和notift方法 其实我们之前可能就发现了,Object类还有三个方法我们从来没有使用过,分别是wait().notify()以及notifyAll(),他们其实是需要配合synchro ...
- Java多线程wait()和notify()方法图解
多线程wait()和notify()方法详解 文章目录 多线程wait()和notify()方法详解 前言 一.线程间等待与唤醒机制 二.等待方法wait() 三.唤醒方法notify() 四.关于w ...
- java多线程 wait和notify方法
public class ProductTest {public static void main(String[] args) {Clerk clerk = new Clerk();Producte ...
- Java并发07:Thread的基本方法(4)-Thread.sleep()、Object.wait()、notify()和notifyAll()
[超级链接:Java并发学习系列-绪论] 本章主要对Java中Thread类的基本方法进行学习. 1.序言 Thread类作为线程的基类,提供了一系列方法,主要有: Thread.sleep(long ...
- java thread.notify,Java Thread notify()方法
Java Thread notify()方法 java.lang.Thread.notify() 方法用于唤醒单个线程.此方法仅针对正在等待特定对象的一个线程给出通知.如果我们使用notify() 方 ...
- java thread join()_Java中Thread.join()的使用方法
概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...
- Java学习之Thread之【Monitor】与【wait】与【notify】与【sleep】_加【Callable】【Executor】【ExecutorService】【Future】
目录 ■基础 [相同点] [不同的] ■代码示例1(生产者与消费者) 0.ProductTest.java 1.Clerk.java 2.Consumer.java 3.Producer.java ■ ...
- Java线程之两种方法Runnable和Thread的区别
在java中有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口: 1>Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的 ...
- Java并发编程—Thread类的start()方法是如何启动一个线程的?
目录 一:Java线程介绍 二:Java线程入口分析 三:Java线程的创建 四:总结 周末抽了点时间,研究了下HotSpot是如何创建Java线程的,顺便总结一下.文中引用的源码里删除很多细节,只保 ...
最新文章
- 【图论专题】最小生成树的扩展应用
- Unity UGUI——遮罩效果(Mask)
- numpy的random模块
- 解读服务器虚拟化的十大误区
- 通过组策略找回“网上邻居”
- SRS流媒体服务器——单机环境搭建和源码目录介绍
- 使用ThreadLocal不当可能会导致内存泄露
- packETH发包工具使用教程
- 河南王牌计算机专业,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...
- python代码封装加密_静态编译python源代码,使用Nuitka加密你的py源码
- 匹配objectuse rootsift= sqrt( sift / sum(sift) ) to improve object retrieval
- 使用docker方式安装etcd集群,带TLS证书
- xUtils 中的BitmapUtils 全面注释
- Spring的单例模式底层实现
- Atitit 知识管理之 经济学概论 attilax 学习心得
- Java调用网易163邮箱,发送邮件
- 高并发编程之面试题一
- binder机制原理android,Binder机制1---Binder原理介绍
- html svg单击事件,html5 svg 中元素点击事件添加方法
- 计算机数字音乐有什么,数字时代的计算机音乐
热门文章
- vml入门教程 【转】
- File类的mkdir()与mkdirs()方法的区别
- nvm use切换node版本,但是切换后没有*号
- Python版插入排序算法
- 一个傻傻的尼姆游戏及其Python实现
- 基于OpenCV实现图像线性变化
- python中quad_python – 沿quadmesh的x轴的日期
- 遍历 in java_[Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历
- 小钳子图片_家居维修小帮手:史丹利45件套工具套装组合评测
- 日志对服务器压力,服务器一大堆错误日志的解决方法