Java中的对象监视器是什么意思?为什么用这个词?

在阅读有关Java线程的文章时,我经常注意到这样的表达:“当前线程是该对象的监视器的所有者”。我的意思是:线程有权在对象上进行操作。但是我很困惑,为什么我们使用“对象的监视器”而不是“对象的锁”?

简而言之,我不知道“监视”一词的含义。这个问题可能很奇怪而且很简单。但我希望任何人都能帮助解决它。3ks

回答:

但是我感到困惑的是为什么要在“对象的锁”中使用“对象的监视器”一词呢?

有关在此上下文中使用的解释“监视”一词的链接,请参见ulmangt的答案。注意:

“监视器是由Per Brinch Hansen和CAR Hoare发明的,并且首先以Brinch Hansen的并发Pascal语言实现。

(来源:维基百科)

为什么使用术语“监视器”而不是“锁定”?严格来说,这些术语的含义确实不同……尤其是如果您以最初打算使用的方式使用它们时。

  • “锁”是指具有获取和释放原语的东西,这些原语和原语保持某些锁属性。例如,独占使用或单作者/多读者。

  • “监视程序”是一种机制,可确保在任何给定时间只有一个线程可以执行给定的代码段。可以使用锁(和“条件变量”,允许线程等待或向其他线程发送满足条件的通知)来实现此功能,但它不仅仅是锁。实际上,在Java情况下,不能直接访问监视器使用的实际锁。(您不能说“ Object.lock()”来阻止其他线程获取它,就像使用Java Lock实例一样。)

简而言之,如果要学究的话,“ monitor”实际上是比“ lock”更好的术语,用于描述Java提供的特性。但是实际上,这两个术语几乎可以互换使用。

以上是 Java中的对象监视器是什么意思?为什么用这个词? 的全部内容, 来源链接: utcz.com/qa/426754.html

回到顶部