讨论/面试考题/多线程问题/
多线程问题

导游早上十点带着3位游客来到一景区,
一共需要游览三个景点,分别为A、B、C,D为出口(终点)。
现在所有人从A出发自有行,但是必须所有人上午11点在B景点集合完成后,
再出发到C,最后13点在D出口处集合统一大巴去其他景区。
请使用java多线程实现以上场景。

展开讨论
共 4 个讨论

用闭锁。。。。。。

定义一个集合等待的 CountDownLatch(1), 一个模拟3个人最终结果的 CountDownLatch(3), 结合 await() 和 countDown() 就很好实现了

1.用栅栏可以实现
2.jdk8版本之后也可以用completable future的服务编排来实现

用栅栏,闭锁也能实现,但是要加多个闭锁,因为它没有保存初始化的数量,在state为0时没法重置。