您的位置:首页 > 编程语言

每秒可产生1亿个序列号的序列生成代码 支持64台服务器同步生成

2007-03-31 01:28 519 查看
public class NextIdGen {

private NextIdGen() {
}

/**
* 获得机器id 避免机器之间的通信以余数绝对区分
*
* @return
*/
static private int serverId() {
return 077;
}

static long next = -1;

synchronized private static long getStart() {
return System.currentTimeMillis() - 1163657797656l;
}

/**
* 每秒钟产生1亿个序列号 可以设置64台机器同步产生序列号
*
* @return
*/
synchronized public static long next() {
// System.out.println(System.currentTimeMillis());
if (next == -1)
next = getStart() * 10000;
next = next + 1;
return next * 0100 + serverId();
}

/**
* 测试
*
* @param args
*/
public static void main(String args[]) {
for (int i = 0; i < 1000; i++) {
System.out.println(("" + next()).length());
System.out.println((next()));
}
}
}

注:本程序由我的同事 王立昌 所写

http://wanglch200.blog.sohu.com/本文出自 “霜之哀伤” 博客,请务必保留此出处http://maomao.blog.51cto.com/115985/22182
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐