在java中,如何在多个`条件`上等待,直到它们中的任何一个被发出信号

Hao*_*hun 9 java multithreading

假设电梯模拟程序,即将乘坐的游客要等到任何一个电梯门打开.即我想等多个,Conditions直到任何一个信号发出信号.

实际上,它并非必须如此Conditions,其他可以满足我需求的方法是受欢迎的.

如何在Java中完成?

Ric*_*ich 7

您可能会发现CountDownLatch可以完成您需要的工作.您将实例化计数为1的锁存器:

CountDownLatch latch = new CountDownLatch(1);
Run Code Online (Sandbox Code Playgroud)

然后在你的线程之间共享它.所有等待门打开的线程都可以latch.await().在另一个线程调用之前,此方法不会返回latch.countDown().


And*_*ite 5

您可能想要查看ObserverObservable.您仍然需要处理踩踏问题但是使用Observer,您至少可以让模拟器知道何时打开门(触发事件)