欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

util-randnumgenerator

更新时间: 2014-01-05 02:56:57 责任编辑: Author_N1

 

Util--RandNumGenerator
/**
 * 19位长度随机数生成器,生成规则为当前系统时间(13位长度的) + 毫秒级别的 自增数字。
 * 
 * @author chenxin
 * @version [版本号, 2012-5-21]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class RandNumGenerator {

	static AtomicInteger ai = new AtomicInteger(10000);
	
	/**
	 * uuid分隔符
	 */
	private static final String UUID_SP = "-";
	
	/**
	 * uuid替换符
	 */
	private static final String UUID_RP = "";
	
	/**
	 * 私有构造
	 */
	private RandNumGenerator() {
	}

	/**
	 * 同步的生成新的随机数的方法
	 * 
	 * @return 19位长度随机数
	 */
	public static  long nextNumber() {
		long curTime = System.currentTimeMillis() * 100000L;
		// 如果本次随机数产生时间与上一次产生时间在毫秒级别
		// 是一样的,则自增数++,否则自增序列归0
		return curTime + nextCountValue();
	}

	/**
	 * 获取6位长度序列自增数
	 * 
	 * @return
	 */
	private static long nextCountValue() {
		ai.compareAndSet(100000, 10000);
        return ai.getAndAdd(1);
	}
	
	/**
	 * 生成一个UUID
	 * @return    UUID
	 */
	public static String nextUUID(){
		String s = UUID.randomUUID().toString();//
		return s.replaceAll(UUID_SP, UUID_RP);
	}
	
	public static void main(String[] args){
		long start = System.currentTimeMillis();
		for (int i = 0; i < 10000000; i++) {
			nextNumber();
			//System.out.println(nextNumber());
		}
		long end = System.currentTimeMillis();
		System.out.println(end - start);
	}


}
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:56:57
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/16526/
本文WWW.DOC100.NET DOC100.NET版权所有。