gpt4 book ai didi

java 监视器 - 队列

转载 作者:行者123 更新时间:2023-11-30 03:52:36 30 4
gpt4 key购买 nike

我有一个 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();
}
}

我知道,监视器内只能有一个正在运行的进程,所以我不明白以下内容:

  • 显示器到底是什么?整个类还是两个同步方法?
  • 有多少个等待线程队列?整个类(class)只需要一个,还是每个同步方法一个?
  • 如果监视器是整个类,如果类的定义中没有类似monitor的关键字,Java如何识别为监视器?

最佳答案

就您发布的代码而言,由于方法不是静态方法,因此监视器与对象相关联,而不是与类相关联:类的每个实例都有一个这样的监视器。

此类的每个实例都有一个等待线程队列。队列适用于这两种同步方法,因此如果一个线程正在执行其中一个方法,则其他线程都无法执行其中任何一个方法。

Java 中的每个对象和每个类都有自己的内置监视器。对象监视器适用于非静态方法,类监视器适用于静态方法。监视器是语言定义的一部分,不必显式声明或定义。

关于java 监视器 - 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052752/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com