博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器唯一id生成规则
阅读量:6341 次
发布时间:2019-06-22

本文共 723 字,大约阅读时间需要 2 分钟。

      在使用hashCode的时候,发现会出现相同id,虽然几率很小。虽然发现并不是hashCode的原因,而是其他逻辑的问题。

  但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id;有些id是long的,比如说玩家id。

先贴代码来看:

private static AtomicInteger id = new AtomicInteger(0);        public static long getId()    {        return (ServerKit.getServerId() & 0xFFFF) << 48 | (System.currentTimeMillis()/1000L & 0xFFFFFFFF) << 16 | id.addAndGet(1) & 0xFFFF;    }        private static AtomicInteger IntId = new AtomicInteger(0);        public static int getIntId()    {        return ((int)(System.currentTimeMillis() - 1000000000000L)/1000)<<16L | (IntId.addAndGet(1));    }
View Code

      在生成玩家id的时候把服务器的id也参与,便于以后的合服。

      因为服务器是多线程,所以就用了 AtomicInteger 类型,不用再使用类似 sync等同步工具。

转载于:https://www.cnblogs.com/archy_yu/p/3818700.html

你可能感兴趣的文章
使用wget命令进行整站下载
查看>>
解读volatile
查看>>
zookeeper安装部署
查看>>
centos6——初始化脚本
查看>>
linux I/O优化 磁盘读写参数设置
查看>>
中断处理 I/O内存
查看>>
Java中的transient关键字
查看>>
私有网盘nextcloud 12的问题处理及优化
查看>>
思科设备VLAN之间通信配置
查看>>
mysql排错 (一)
查看>>
20160318作业
查看>>
关于MySQL的几点安全配置
查看>>
zabbix监控H3C的接口流量
查看>>
HAProxy的压缩功能
查看>>
shell 简单计算器
查看>>
浅析Python进行接口自动化
查看>>
windows及linux环境下永久修改pip镜像源的方法
查看>>
表格表单及样式重置、特性
查看>>
八月个人考核
查看>>
linux网卡绑定
查看>>