我有一个类,在它的主要方法中我创建了同一个类的一个实例,然后我在该实例上调用 wait 方法在这种情况下会发生什么?
问问题
87 次
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 回答