监视器和通知&用Java通知all

时间:2018-02-12 00:40:04

标签: java multithreading monitor

我正在进行与监视器相关的在线测验。这些是4个真假问题和我的答案。如果我的答案错了,你能解释一下原因吗?

  1. 如果使用notifyAll() T

  2. ,在使用Java中的监视器时肯定不会发生饥饿
  3. 只有声明为扩展线程或实现runnable的对象在Java中具有监视器锁 F

1 个答案:

答案 0 :(得分:1)

  

如果使用notifyAll(),在Java中使用监视器时绝对不会发生Starvation。的˚F

如果一个线程没有被授予CPU时间,因为其他线程全部获取它,它被称为"饥饿"。 Check here for more.

  • 使用notifyAll()时,JVM会唤醒所有线程,然后唤醒所有线程 线程争夺此对象的锁定。现在,CPU调度程序选择 获取此对象锁定的线程。这意味着使用 notifyAll()无法避免饥饿,因为某些线程可能总是失去争用。
  • 此外,线程被无限制地阻止等待进入 synchronized块,因为其他线程一直被允许 在它之前访问。饥饿也将发生。
  

仅声明扩展线程或实现runnable的对象   在Java中有一个监视器锁。的˚F

来自java.lang.Object的每个类都有监视锁定。 Check here for more.