java多线程开发之通过对战游戏学习CyclicBarrier-创新互联

CyclicBarrier是java.util.concurrent包下面的一个工具类,字面意思是可循环使用(Cyclic)的屏障(Barrier),通过它可以实现让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,所有被屏障拦截的线程才会继续执行。

创新互联是一家集网站建设,德江企业网站建设,德江品牌网站建设,网站定制,德江网站建设报价,网络营销,网络优化,德江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

这篇文章将介绍CyclicBarrier这个同步工具类的以下几点

  1. 通过案例分析
  2. 两种不同构造函数测试
  3. CyclicBarrier和CountDownLatch的区别
  4. await方法及源码分析。

需求


继上一篇CountDownLatch模拟游戏加载后,现在用户点击开始按钮后,需要匹配包括自己在内的五个玩家才能开始游戏,匹配玩家成功后进入到选择角色阶段。当5位玩家角色都选择完毕后,开始进入游戏。进入游戏时需要加载相关的数据,待全部玩家都加载完毕后正式开始游戏。

解决方案


从需求中可以知道,想要开始游戏需要经过三个阶段,分别是

匹配玩家


选择角色


加载数据


在这三个阶段中,都需要互相等待对方完成才能继续进入下个阶段。


这时可以采用CyclicBarrier来作为各个阶段的节点,等待其他玩家到达,在进入下个阶段。

java多线程开发之通过对战游戏学习CyclicBarrier

定义继承Runnable的类


这里名称就叫做StartGame,包含两个属性

private String player;
private CyclicBarrier barrier;

文章题目:java多线程开发之通过对战游戏学习CyclicBarrier-创新互联
文章路径:http://ybzwz.com/article/ceggdi.html