美文网首页
java的等待/通知机制

java的等待/通知机制

作者: high_m | 来源:发表于2017-08-31 17:54 被阅读0次

等待/通知机制,是指一个线程A调用了对象的O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()或notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而执行后续动作。因此,等待通知机制需要与同步代码块或同步方法混合使用。

相关方法

方法名称 描述
notify() 通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提是该线程获取到了对象的锁
notifyAll() 通知所有等待在该对象上的线程
wait 调用该方法的线程进入WAITING状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用wait()方法后,会释放对象的锁
wait(long) 等待超时返回(单位毫秒)

注意细节

1.使用wait(),notify(),notifyAll()时需要先对调用对象加锁。
2.调用wait()方法后,线程状态有RUNNING变为WAITING,并将当前线程放置到对象的等待队列
3.notify()或notifyAll()方法调用后,等待线程需要在调用notify()或notifyAll()的线程释放锁后,才有机会从wait()返回。
4.notify()方法将等待队列中的一个等待线程从等待队列中移到同步队列中,被移动的线程状态由WAITING转为BLOCKED
5.从wait方法返回的前提是获得调用对象的锁

WaitNotify示意图

引自[并发编程的艺术]

相关文章

  • 线程间通信

    1 Java经典的等待/通知机制 在java中的等待通知机制就是,一个线程让其他线程从wait方法返回。前提:wa...

  • java的等待/通知机制

    等待/通知机制,是指一个线程A调用了对象的O的wait()方法进入等待状态,而另一个线程B调用了对象O的notif...

  • java并发编程基础(三)

    1.等待/通知机制 等待/通知的相关方法是任意java对象都具备的,因为这些方法被定义在所有对象的超类java.l...

  • 多线程之wait和notify

    彻底搞懂Java的等待-通知(wait-notify)机制[https://blog.csdn.net/y277a...

  • Java并发编程 - 等待/通知

    Java语言为线程的通信提供了支持,其中的一种方式就是等待/通知机制,java.lang.Object的wait、...

  • 等待/通知机制

    等待/通知机制 场景 吃饭 : 一家人要吃午饭,妈妈做饭,我和爸爸吃饭。让我和爸爸的坐在桌子旁准备吃饭。但是我和爸...

  • 等待&通知机制

    等待/通知机制 什么是等待/通知机制? 举例说明,厨师和服务员之间的交互: 厨师做完一道菜的时间不确定,所以厨师将...

  • 等待/通知机制

    原文地址:https://hexige.github.io/blog/2017/09/25/%E7%AD%89%E...

  • 等待 - 通知机制

    一个完整的等待 - 通知机制:线程首先获取互斥锁,当线程要求的条件不满足时,释放互斥锁,进入等待状态;当要求的条件...

  • 等待/通知机制

    具体流程:一个线程(生产者)修改(nofity)一个对象,另一个线程(消费者)感知到变化(wait中...)开始进...

网友评论

      本文标题:java的等待/通知机制

      本文链接:https://www.haomeiwen.com/subject/snnqjxtx.html