美文网首页
Java面试题 - notify()和notifyAll()的区

Java面试题 - notify()和notifyAll()的区

作者: geaosu | 来源:发表于2017-09-20 00:27 被阅读0次

    notify()和notifyAll()的区别?

    notify():
    唤醒一个处于等待状态的线程,
    注意的是在调用此方法的时候,
    并不能确切的唤醒某一个等待状态的线程,
    而是由JVM确定唤醒哪个线程,而且不是按优先级。

    notifyAll():
    唤醒所有处入等待状态的线程;
    并可以理解为把他们排进一个队列;
    只不过只有头部的线程获得了锁,才能运行;
    注意!!并不是给所有唤醒线程一个对象的锁,而是让它们竞争,
    当其中一个线程运行完就开始运行下一个已经被唤醒的线程,因为锁已经转移了。
    (这个时候是否运行已经不是因为等待状态,而是处于runnning队列中)

    相关文章

      网友评论

          本文标题:Java面试题 - notify()和notifyAll()的区

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