多个线程可以同时在一个对象上等待吗?

时间:2011-04-18 01:40:44

标签: java multithreading monitor

如果只能从同步上下文中调用wait,并且只能在保持锁定时调用对象上的wait,那么多个线程如何在同一个对象上等待?此外,由于还必须从同步上下文调用notify,因此如何进行通知?

2 个答案:

答案 0 :(得分:8)

wait方法释放对其正在等待的对象的锁定。一旦释放,另一个对象就可以获得锁定并等待或通知。而且,这都是right there in the javadoc

答案 1 :(得分:1)

不能直接回答你的问题,但是你可以在Java 5上使用并发包中的CountDownLatch类来代替使用wait方法。你可以在类上初始化CountDownLatch你要等待,等待它的方法应该执行方法await(),并释放你调用方法countDown()的锁存器。在我看来,它比使用wait()更清晰明了。有效的Java书籍有一个关于这个课程的非常有趣的话题。