Java中object's monitor的含义是什么?为什么要用这个词?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (95)

在阅读关于Java线程的文章时,我经常注意到表达式:“当前线程是这个对象监视器的所有者”。我明白了这个意思:线程有权对对象进行操作。但是我很困惑为什么我们用“the object's monitor”而不是“the object's lock”这个短语?

简而言之,我不知道“monitor”这个词的含义。这个问题可能很奇怪,很简单。但我希望有人能帮助解决它。

提问于
用户回答回答于

但我很困惑为什么用“the object's monitor”这个词来代表“the object's lock”?

请参阅ulmangt对解释在此上下文中使用的术语“monitor”的链接的回答。

为什么使用术语“monitor”而不是“lock”?严格地说,这些术语确实意味着不同的东西......特别是如果你以最初打算使用它们的方式使用它们。

  • “lock”是获取和释放原语的东西,它们保持某些锁定属性; 例如独家使用或单个作者/多个阅读器。
  • “monitor”是一种机制,可确保在任何给定时间只有一个线程可以执行给定的代码段(或多个段)。这可以通过使用锁来实现(以及“条件变量”,允许线程等待或发送通知给条件满足的其他线程),但它不仅仅是一个锁。事实上,在Java情况下,监视器使用的实际锁定不能直接访问。(你不能说“Object.lock()”来阻止其他线程获取它......就像你可以用Java Lock实例一样。)

简而言之,如果一个人是迂腐的,那么“monitor”实际上是一个比“锁定”更好的术语,用于描述Java提供的特性。但实际上,这两个术语几乎可以互换使用。

用户回答回答于

monitor只是一个对象,它的方法可以在多线程环境中安全地使用。

扫码关注云+社区