码迷,mamicode.com
首页 > 其他好文 > 详细

服务器唯一id生成规则

时间:2014-07-03 00:45:45      阅读:695      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   

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

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

先贴代码来看:

bubuko.com,布布扣
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等同步工具。

服务器唯一id生成规则,布布扣,bubuko.com

服务器唯一id生成规则

标签:style   blog   http   color   使用   os   

原文地址:http://www.cnblogs.com/archy_yu/p/3818700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!