游戏组队匹配线程类 主要用到是CyclicBarrier类
package com.api.websocket.game;import java.util.List;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CyclicBarrier;
import java.util.stream.Collectors;/*** 游戏组队匹配线程类** 实际项目远远比这个复杂* 中通过请求接口,第一个玩家创建房间ID* 匹配成功后,socket推送结果,还应该考虑匹配超时处理* @author  zhanqi* @since    2020-11-30 22:30:34*/
public class  PlayerIn implements Runnable {final int id;final CyclicBarrier barrier;final String roomId;final CopyOnWriteArrayList<Integer> list;public PlayerIn(final int id, final CyclicBarrier barrier,String roomId,CopyOnWriteArrayList<Integer> list) {this.id = id;this.barrier = barrier;this.roomId=roomId;this.list=list;}@Overridepublic void run() {try {System.out.println("玩家"+this.id + "进入");System.out.println("系统匹配中......");Thread.sleep((long) (Math.random() * 10000));List<Integer> result = list.stream().filter(s -> s != id).collect(Collectors.toList());System.out.println("玩家"+this.id +"在房间"+roomId+ "匹配到玩家"+result);this.barrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}
}

运行类

package com.api.websocket.game;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CyclicBarrier;/**** @author  zhanqi* @since    2020-11-30 22:10:10*/
public class GameMatchingMain {public static void main(String[] args) {CopyOnWriteArrayList<Integer> list = new CopyOnWriteArrayList<>();//3人开始游戏final int count = 3;//房间IDfinal String roomId=UUID.randomUUID().toString();final CyclicBarrier barrier = new CyclicBarrier(count, () ->System.out.println("房间ID:"+roomId+"匹配成功"+list));for (int i = 0; i < 3; i++) {list.add(i);new Thread(new PlayerIn(i, barrier,roomId,list)).start();}}
}

结果

Java实现游戏匹配相关推荐

  1. java手机游戏模拟器下载_Java手机游戏模拟器

    Java手机游戏模拟器主要针对诺基亚S60系列(屏幕176*220)手机以及其他大屏手机(小屏游戏也可运行,但不能全屏显示),是一款非常简单而且实用的JAVA游戏模拟器,可以正常运行绝大部分JAVA手 ...

  2. Java在游戏服务器开发中的应用

     Java在游戏服务器开发中的应用 width="22" height="16" src="http://hits.sinajs.cn/A1/we ...

  3. 符号库匹配不对的原因_王者荣耀:万恶的游戏匹配机制,最菜的队友才是游戏胜利的关键...

    在王者荣耀中排位是我们很多玩家的追求,不过在游戏中,因为排位上不去从此的退出游戏的,也是大有人在.一个游戏有新玩家进入,有老玩家离去是一个游戏正常的生态,不过很多因为上不了段位退出游戏的玩家,并且是因 ...

  4. java开源游戏下载安装_开源java扫雷游戏,Swing版。

    开源java扫雷游戏,Swing版. xC6JnAIE.zip (60.07 KB) 开源java扫雷游戏,Swing版. 程序文件说明 文件 内容 备注 AboutFrame.java 程序&quo ...

  5. 《Java 2D游戏编程入门》—— 1.5 创建一个主动渲染的窗口

    本节书摘来异步社区<Java 2D游戏编程入门>一书中的第1章,第1.5节,作者:[美]Timothy Wright(莱特),更多章节内容可以访问云栖社区"异步社区"公 ...

  6. java打地鼠游戏-有背景音乐有图

    效果如图: 有背景音效,打击音效 代码不多,30几兆的原因是因为背景音乐文件比较大(一首歌占了一半?) csdn代码下载地址:点击下载 csdn下载需要c币,没有c币可从微信公众号[无心有云] 发送[ ...

  7. Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(

    2019独角兽企业重金招聘Python工程师标准>>> 在Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(百搜技术) 在Java ME游戏开发中,经常需要进行碰撞检测 ...

  8. java swing游戏_Java Swing井字游戏

    java swing游戏 大家好! 哇,自从我在这里发布了东西以来已经有一段时间了! 我必须说我真的很想写东西,我保证我不会再陷入"作家的障碍". 希望 ..最近两个月发生了很多事 ...

  9. 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法

    我的世界崩溃怎么办?下面吾爱网小编给大家带来我的世界无法正常启动的解决方法,需要的朋友可以参考下. 我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现 ...

最新文章

  1. 百分点集团发布中国首个行业AI决策系统产品Deep Matrix
  2. nginx 部署antd_design_pro
  3. 德约科维奇横扫纳达尔夺冠 加冕澳网七冠王
  4. 【51nod】1559 车和矩形
  5. python补集运算_Python 的集合(set)运算
  6. leetcode191-打家劫舍
  7. html track标签,HTML track标签
  8. git bash上传代码到github
  9. code review平台Rietveld应用指南
  10. 斐波那契数列的三种解法
  11. 20套初级javaweb项目开发案例(适合小白)
  12. SuperMap iDesktop之夜景特效制作
  13. Java获取当前年份,计算当前月有多少自然日、有多少工作日、有几周
  14. python乘法口诀表打印
  15. JS 统计字符串中大小写字母个数
  16. 如何判断外汇平台是否整个?MT4外汇投资靠谱吗?
  17. 谷歌、亚马逊全面开火,一场前所未有的AI芯片大战
  18. Web大学生网页作业成品——抗击疫情网站设计与实现(HTML+CSS)
  19. R语言data.frame label的设置
  20. 中国大学校徽宇宙的尽头,是消消乐吧?

热门文章

  1. 解决Spring项目读取配置文件中文乱码问题
  2. 基于微信小程序的再生资源回收平台设计与开发(论文+程序设计源码+数据库文件)
  3. 【Spoken English】Some Useful Conversation (1)
  4. 【windows10】 双系统下,windows10系统重装后修复Linux引导
  5. 李小璐JAVA,抖音爆火的随机点名Java实现原理,没有连接数据库
  6. tp-wdr5620 创建虚拟服务器,TP-LINK路由器 TL-WDR5620 设置、使用、问题解答综合指南...
  7. Unable to extract the trust manager on Android10Platform
  8. Keil5----新建项目文件( .c文件 和 .h文件)
  9. 涂鸦模组二次开发RTL8710BNRTL8720DN
  10. 学习笔记:《Foundation models for generalist medical artificial intelligence》