在阅读有关Java线程的文章时,我经常注意到这样一句话:“当前线程是此对象监视器的所有者”。我明白了:线程获得了对对象进行操作的权限。但我不明白为什么我们用“对象的监视器”而不是“对象的锁”?
简而言之,我不知道“显示器”这个词的意思。这个问题可能很奇怪,也很简单。但我希望任何人都能帮助解决这个问题。3ks
发布于 2012-03-24 10:35:08
监视器只是对象的一个术语,它的方法可以在多线程环境中安全地使用。
维基百科上有一篇关于监视器的很棒的文章:
http://en.wikipedia.org/wiki/Monitor_(synchronization)
如果你向下滚动,它甚至还有一个section explicitly about Java。
发布于 2014-07-09 04:28:31
object
周围的synchronized
块是它的监视器,它控制对象上的锁。下面是一个示例
synchronized (object) {
while (<condition does not hold>)
object.wait(timeout);
... // Perform action appropriate to condition
}
发布于 2017-02-03 01:32:56
尽管回答这个问题为时已晚,我还是想补充一下--以防万一。
下面是一个非同步Java方法中的同步Java代码块
public void add(int value){
synchronized(this){
this.count += value;
}
}
在示例中使用了"this“,这是调用add方法的实例。同步实例方法使用它所属的对象作为监视器对象。
在同一监视器对象上同步的=>代码块中,只有一个线程可以执行。
https://stackoverflow.com/questions/9848616
复制相似问题