如果只能从同步上下文中调用wait,并且只能在保持锁定时调用对象上的wait,那么多个线程如何在同一个对象上等待?此外,由于还必须从同步上下文调用notify,因此如何进行通知?
答案 0 :(得分:8)
wait方法释放对其正在等待的对象的锁定。一旦释放,另一个对象就可以获得锁定并等待或通知。而且,这都是right there in the javadoc。
答案 1 :(得分:1)
不能直接回答你的问题,但是你可以在Java 5上使用并发包中的CountDownLatch类来代替使用wait方法。你可以在类上初始化CountDownLatch
你要等待,等待它的方法应该执行方法await(),并释放你调用方法countDown()的锁存器。在我看来,它比使用wait()更清晰明了。有效的Java书籍有一个关于这个课程的非常有趣的话题。