我试图了解你在Java中如何使用监视器。据我所知,Java不提供像二进制或计数信号量那样可以创建的监视器。既然如此,当我看到人们做类似的事情时,究竟是什么意思:
while(!B){
x.wait();
}
在这种情况下x究竟能是什么?它是否构建了一些模仿具有wait()方法的监视器操作的类?
为什么不这样做呢
while(!B){
wait();
}
?它是这样你可以有多个显示器?如果是这样,为什么?在这一点上你似乎也可以使用信号量......
总的来说,我认为我的问题是真正了解显示器是什么以及如何正确使用它。我很感激你能给我的任何见解。
答案 0 :(得分:1)
wait()
是java.lang.Object
的一种方法。每个Java对象都有一个内部锁,称为监视器。
x.wait()
等待变量x
的对象引用。 wait()
相当于this.wait()
,因此会等待this
引用的对象。
那就是说,wait()
是一个非常低级且难以使用的抽象。你最好使用更高级的抽象,比如Java所拥有的...... Semaphore
。在javadoc中查看。
另请查看Java's concurrency tutorial,其中包含这些主题。