我对 Java 监视器的术语有疑问。首先我区分两种显示器:
- 可以使用
wait()获取
- 可以通过
同步
block 获取的内容
监视器本身是一个对象,在其上调用wait()
或synchronized
。如何区分这两种类型的显示器?在 JVMTI API他们写道:
"monitor" means Java programming language object monitor.
这对我没有帮助。然而,他们进一步使用术语“监视器”和“竞争监视器”来至少在 API 中的函数调用方面区分它们。
最佳答案
从根本上来说,这些是同一件事。它们有不同的名称:监视器、互斥体和(在 Java 中)原始锁,这些术语在当前使用中的含义几乎相同。
涉及互斥体以及调用 wait()
和 notify()
的线程的主要使用模式称为条件,但是相同的互斥量可以同时用作简单的互斥区域。
短语“争用监视器”是指在互斥区域上存在争用的监视器/互斥锁/原始锁。或者更简单地说,一个线程持有互斥锁,而其他线程则等待获取它。
维基百科引用资料:
(应该指出的是,这些页面不是确定的,也不完全一致。但是大多数 IT 人员都“快速而宽松”地使用术语,很少有人阅读过原始出版物。但是,嘿......那是语言是如何进化的。)
关于java - 区分 Java 编程语言监视器和等待/通知监视器的术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895961/