Java:线程如何在多个对象上等待?

Ton*_*ony 19 java multithreading notify wait

线程可以Object.wait()用来阻塞直到另一个线程调用notify()notifyAll()在该对象上.

但是如果一个线程想要等到多个对象中的一个被发出信号呢?例如,我的线程必须等待,直到要么 a)使用字节可用从阅读InputStream或b)项被添加到ArrayList.

线程如何等待这些事件发生?

编辑

这个问题涉及等待多个线程完成 - 我的情况涉及一个线程等待许多对象中的一个被单独化.

art*_*tol 22

你是一个痛苦的世界.使用更高级别的抽象,例如阻塞消息队列,线程可以从中使用消息,例如"更多字节可用"或"添加项目".


Tim*_*the 6

他们都可以使用相同的互斥锁.您的消费者正在等待该互斥锁,当第一个互斥锁可以继续时,两者都会通知该互斥锁.


sgo*_*les 5

线程不能一次等待多个对象.

wait()notify()方法是特定对象的.该wait()方法挂起当前执行的线程,并告诉对象跟踪挂起的线程.该notify()方法告诉对象唤醒它当前正在跟踪的挂起线程.

有用的链接:一个线程可以在Java(6)中一次调用两个锁上的wait()吗?