2013-03-06 66 views
6

我有这样的编码。如何拥有物体的显示器

public class WaitTest { 

    public static void main(String[] args) { 
    Object object = new Object(); 
    try { 
     synchronized (object) { 
     object.wait(5000); 
     } 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

是否使用同步的(对象)装置WaitTest类所属对象的监视器?

+0

主线程是唯一拥有'object'锁的线程。这些类不能拥有锁,这些线程可以。 – 2013-03-06 08:23:52

回答

8

类没有自己的监视器,线程。

在你的例子中,WaitTest不拥有显示器,主线程。

特别是,没有其他线程将能够在同一个对象上输入​​块,包括调用任何object的​​方法,如果有任何这样的方法。

+1

**使用同步(对象)意味着**主线程拥有对象监视器,不是吗? – bsiamionau 2013-03-06 08:24:14

+0

@zvzdhk:很好,我在阅读这个问题时没有发现这种微妙的误解。 – NPE 2013-03-06 08:25:47

+1

现在好多了。 +1 – bsiamionau 2013-03-06 08:27:57

0

的线程拥有的监视器,并有三种方式将自己的显示器,根据官方的JDK文档位置:Object.notify

线程成为三种方式之一对象监视器的所有者:

  • 通过执行该对象的同步实例方法。
  • 通过执行同步对象的同步语句的主体。
  • 对于Class类型的对象,通过执行该类的同步静态方法。
相关问题