Linux 拨号vps windows公众号手机端

java中的notify和notifyAll有什么区别

lewis 8年前 (2017-02-10) 阅读数 10 #程序编程
文章标签 Java

在Java中,notifynotifyAll是用于线程间通信的方法,用于唤醒等待中的线程。

区别如下:

  1. notify方法只会唤醒一个等待中的线程,而notifyAll方法会唤醒所有等待中的线程。
  2. 如果多个线程等待同一个对象锁上的wait方法,当调用notify方法时,只会唤醒其中一个线程,具体唤醒哪个线程是不确定的,而调用notifyAll方法时,会唤醒所有等待中的线程。
  3. 使用notify方法唤醒的线程是由系统随机选择的,可能会导致某些线程长时间等待而没有被唤醒,从而造成"线程饥饿"的问题。而使用notifyAll方法可以避免这个问题。
  4. notify方法通常用于多个线程并发操作共享资源的情况下,当某个线程完成对共享资源的修改时,通过调用notify方法唤醒其他等待中的线程来处理这个资源。而notifyAll方法通常用于多个线程竞争某个资源的情况下,当某个线程释放了资源时,通过调用notifyAll方法唤醒其他等待中的线程来竞争这个资源。

综上所述,notify方法唤醒一个等待中的线程,而notifyAll方法唤醒所有等待中的线程,使用时需要根据具体情况选择使用。

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门