这时可以采用CyclicBarrier来作为各个阶段的节点,等待其他玩家到达,在进入下个阶段。源码分析一波就可以看出来了不管是有参还是无参的await方法都是调用CyclicBarrier的dowait方法,这个方法代码太长了,截取部分贴出来在代码的尾部进行判断当前等待是否已经超时,如果是会调用breakBarrier()方法,且抛出TimeoutException异常,下面是breakBarrier()的代码代码中将broken状态置为true,表示当前栅栏移除损坏状态,且重置栅栏数量,然后唤醒其他等待的线程。
暂无评论