[英]java monitor - queues
我有一个 java 监视器,但我需要一些解释:
class Test
{
private int data;
private boolean full = false;
public synchronized int receive() {
while (!full) wait();
full = false;
return data;
}
public synchronized void send(int value) {
data = value;
full = true;
notify();
}
}
我知道,监视器内只能有一个正在运行的进程,所以我不明白以下几点:
在您发布的代码的情况下,由于方法不是静态方法,因此监视器与对象相关联,而不是与类相关联:类的每个实例都有一个这样的监视器。
此类的每个实例都有一个等待线程队列。 队列适用于这两种同步方法,因此如果一个线程正在执行其中一种方法,则其他线程无法执行其中任何一种方法。
Java 中的每个对象和每个类都有自己的内置监视器。 对象监视器适用于非静态方法,类监视器适用于静态方法。 监视器是语言定义的一部分,不必显式声明或定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.