我有这样的编码。
public class WaitTest {
public static void main(String[] args) {
Object object = new Object();
try {
synchronized (object) {
object.wait(5000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
使用 synchronized(object)是否意味着WaitTest类拥有对象的监视器?
答案 0 :(得分:8)
类没有监视器,线程也没有。
在您的示例中,WaitTest
不拥有监视器,主线程支持。
特别是,没有其他线程可以在同一个对象上输入synchronized
块,包括调用任何object
的{{1}}方法,如果它有任何此类方法
答案 1 :(得分:0)
线程拥有监视器,根据官方JDK文档,有三种方式拥有监视器:Object.notify
线程以三种方式之一成为对象监视器的所有者:
- 执行该对象的同步实例方法。
- 执行在对象上同步的同步语句的主体。
- 对于Class类型的对象,通过执行该类的同步静态方法。