在Java的并发编程中,监视器指的是什么?
当我读到“每个对象都关联了一个监视器”时,它的意思是什么?
它是一个特殊的物体吗?
发布于 2010-07-29 20:17:40
监视器是一种控制对对象的并发访问的机制。
这允许您执行以下操作:
线程1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
线程2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
这可以防止线程1和线程2同时访问被监视(同步)的部分。其中一个将启动,监视器将阻止另一个在第一个完成之前访问该区域。
它不是一个特殊的物体。它的同步机制放在类层次结构的根目录:java.lang.Object
。
还有wait
和notify
方法,它们也将使用对象的监视器在不同线程之间进行通信。
发布于 2017-02-19 20:52:24
Java语言和运行时系统通过使用监视器支持线程同步。
监视器与特定的数据项(条件变量)相关联,并作为对该数据的锁定。当一个线程持有某个数据项的监视器时,其他线程将被锁定,并且无法检查或修改数据。
发布于 2018-04-26 21:18:51
监视器是一种同步构造,它允许线程具有互斥和等待(阻塞)特定条件变为真的能力。
监视器还具有一种机制,用于向其他线程发出其条件已被满足的信号。它是同时拥有锁和等待集的实体。在Java中,任何对象都可以充当监视器。
在Java虚拟机中,每个对象和类在逻辑上都与一个监视器相关联。要实现监视器的互斥功能,需要将锁(有时称为互斥)与每个对象和类相关联。这在操作系统术语中称为信号量,互斥是一个二进制信号量。
https://stackoverflow.com/questions/3362303
复制相似问题