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

2022-09-01 22:41:08

线程可用于阻塞,直到另一个线程调用或该对象。Object.wait()notify()notifyAll()

但是,如果线程想要等到多个对象中的一个发出信号,该怎么办?例如,我的线程必须等到 a) 字节变为可从 a 读取或 b) 将项添加到 .InputStreamArrayList

线程如何等待这些事件中的任何一个发生?

编辑

这个问题涉及等待多个线程完成 - 我的案例涉及一个线程等待许多对象之一被单独化。


答案 1

你正处在一个充满痛苦的世界。使用更高级别的抽象,例如阻塞消息队列,线程可以从该队列中使用诸如“更多可用字节数”或“已添加项”之类的消息。


答案 2

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