0

我试图了解您如何在 Java 中使用监视器。据我所知,Java 没有提供可以像使用二进制或计数信号量那样创建的监视器。既然是这样,当我看到人们这样做时,这到底意味着什么:

while(!B){ 
    x.wait(); 
}

在这种情况下,x 究竟是什么?是他们构建的某个类模仿具有 wait() 方法的监视器操作吗?

为什么不这样做

while(!B){
    wait();
}

? 是不是这样你就可以拥有多个显示器?如果是这样,为什么?在这一点上,您似乎还不如只使用信号量......

总的来说,我认为我的问题是真正了解显示器是什么以及如何正确使用它。我很感激你能给我的任何见解。

4

1 回答 1

1

wait()是一种方法java.lang.Object。每个 Java 对象都有一个内在锁,称为监视器。

x.wait()等待变量引用的对象xwait()等价于this.wait(),因此等待 . 引用的对象this

也就是说,这wait()是一个非常低级且难以使用的抽象。您最好使用更高级别的抽象,如SemaphoreJava 所具有的...。在 javadoc 中查看。

另请查看涵盖这些主题的 Java 并发教程。

于 2013-02-18T23:11:58.980 回答