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()方法相关推荐

  1. Java学习: wait和notify方法、ThreadLocal

    wait方法和notift方法 其实我们之前可能就发现了,Object类还有三个方法我们从来没有使用过,分别是wait().notify()以及notifyAll(),他们其实是需要配合synchro ...

  2. Java多线程wait()和notify()方法图解

    多线程wait()和notify()方法详解 文章目录 多线程wait()和notify()方法详解 前言 一.线程间等待与唤醒机制 二.等待方法wait() 三.唤醒方法notify() 四.关于w ...

  3. java多线程 wait和notify方法

    public class ProductTest {public static void main(String[] args) {Clerk clerk = new Clerk();Producte ...

  4. Java并发07:Thread的基本方法(4)-Thread.sleep()、Object.wait()、notify()和notifyAll()

    [超级链接:Java并发学习系列-绪论] 本章主要对Java中Thread类的基本方法进行学习. 1.序言 Thread类作为线程的基类,提供了一系列方法,主要有: Thread.sleep(long ...

  5. java thread.notify,Java Thread notify()方法

    Java Thread notify()方法 java.lang.Thread.notify() 方法用于唤醒单个线程.此方法仅针对正在等待特定对象的一个线程给出通知.如果我们使用notify() 方 ...

  6. java thread join()_Java中Thread.join()的使用方法

    概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...

  7. Java学习之Thread之【Monitor】与【wait】与【notify】与【sleep】_加【Callable】【Executor】【ExecutorService】【Future】

    目录 ■基础 [相同点] [不同的] ■代码示例1(生产者与消费者) 0.ProductTest.java 1.Clerk.java 2.Consumer.java 3.Producer.java ■ ...

  8. Java线程之两种方法Runnable和Thread的区别

    在java中有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口: 1>Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的 ...

  9. Java并发编程—Thread类的start()方法是如何启动一个线程的?

    目录 一:Java线程介绍 二:Java线程入口分析 三:Java线程的创建 四:总结 周末抽了点时间,研究了下HotSpot是如何创建Java线程的,顺便总结一下.文中引用的源码里删除很多细节,只保 ...

最新文章

  1. 【图论专题】最小生成树的扩展应用
  2. Unity UGUI——遮罩效果(Mask)
  3. numpy的random模块
  4. 解读服务器虚拟化的十大误区
  5. 通过组策略找回“网上邻居”
  6. SRS流媒体服务器——单机环境搭建和源码目录介绍
  7. 使用ThreadLocal不当可能会导致内存泄露
  8. packETH发包工具使用教程
  9. 河南王牌计算机专业,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...
  10. python代码封装加密_静态编译python源代码,使用Nuitka加密你的py源码
  11. 匹配objectuse rootsift= sqrt( sift / sum(sift) ) to improve object retrieval
  12. 使用docker方式安装etcd集群,带TLS证书
  13. xUtils 中的BitmapUtils 全面注释
  14. Spring的单例模式底层实现
  15. Atitit 知识管理之 经济学概论 attilax 学习心得
  16. Java调用网易163邮箱,发送邮件
  17. 高并发编程之面试题一
  18. binder机制原理android,Binder机制1---Binder原理介绍
  19. html svg单击事件,html5 svg 中元素点击事件添加方法
  20. 计算机数字音乐有什么,数字时代的计算机音乐

热门文章

  1. vml入门教程 【转】
  2. File类的mkdir()与mkdirs()方法的区别
  3. nvm use切换node版本,但是切换后没有*号
  4. Python版插入排序算法
  5. 一个傻傻的尼姆游戏及其Python实现
  6. 基于OpenCV实现图像线性变化
  7. python中quad_python – 沿quadmesh的x轴的日期
  8. 遍历 in java_[Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历
  9. 小钳子图片_家居维修小帮手:史丹利45件套工具套装组合评测
  10. 日志对服务器压力,服务器一大堆错误日志的解决方法