-3

我有一个类,在它的主要方法中我创建了同一个类的一个实例,然后我在该实例上调用 wait 方法在这种情况下会发生什么?

4

1 回答 1

2

它会永远等待:http: //ideone.com/bjUe6Y

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.setErr(System.out);
        System.out.println("Start");
        Ideone i = new Ideone();
        synchronized (i)
        {
            i.wait();
        }
        System.out.println("Done");
    }

    public Ideone() throws Exception
    {
        System.out.println("Instanciated");
    }
}

但是,如果您不对对象进行同步,它会抛出一个IllegalMontiorStateException

Exception in thread "main" java.lang.IllegalMonitorStateException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:503)
    at Ideone.<init>(Main.java:20)
    at Ideone.main(Main.java:14)

http://ideone.com/ceZYTQ (在构造函数中等待)

于 2013-10-21T22:03:39.070 回答