我创建了这个愚蠢的程序来玩 wait()
public class WaitTest {
public static void main(String [] args) {
System.out.print("1 ");
synchronized(args){
System.out.print("2 ");
try {
args.wait();
args.notifyAll();
}
catch(InterruptedException e){ System.out.print("exception caught");}
System.out.print("3 ");
}
}
}
在我的机器上,代码永远不会打印 3,除非我编写 wait(100)
或其他毫秒数。这是为什么?
最佳答案
您在notifyAll()之前执行wait()。 wait() 将被阻塞。当您输入超时值时, wait() 将超时,然后您的程序将继续。如果您希望程序正常工作,请创建一个线程并在那里执行 notificationAll() 。 wait() 和notifyAll 是为线程间同步而设计的。
关于java - 理解 wait(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897903/