自动生成全局时间戳id的工具类

import java.util.HashSet; import java.util.Random; import java.util.ResourceBundle; import java.util.UUID; /** * *类名称:各种id生成策略 *类描述: * *编 写 人:kxw *编写日期:2016-8-29 * *修改人: *修改日期: *修改内容: * *版本:1.0 */ public class IDUtils { private static int id=0; private static long time; private static String hostCode; //主机编号 static{ //读取配置文件 ResourceBundle conf = ResourceBundle.getBundle("host"); hostCode=conf.getString("hostCode"); } /** * 图片名生成 */ public static String genImageName() { //取当前时间的长整形值包含毫秒 long millis = System.currentTimeMillis(); //long millis = System.nanoTime(); //加上三位随机数 Random random = new Random(); int end3 = random.nextInt(999); //如果不足三位前面补0 String str = millis + String.format("%03d", end3); return str; } /** * id生成 */ public static long getId() { //取当前时间的长整形值包含毫秒 long millis = System.currentTimeMillis(); //long millis = System.nanoTime(); //加上两位随机数 long end3 = getRand(millis); //如果不足两位前面补0 //String str = millis + String.format("%03d", end3); //long id = new Long(str); return end3; } private synchronized static long getRand(long l){ if(l>time){ time=l; id=0; }else{ id++; }if(id>99){ id=0; time=time+1; } String str = time+hostCode + String.format("%02d", id); long ids = new Long(str); //System.out.println(ids); return ids; } public static void main(String[] args) { int m=0; System.out.println(System.currentTimeMillis()); HashSet hashSet = new HashSet(); for(int i=0; i<99999; i++){ // //if(getId()==getId()){ //m++; //System.out.println("重复了"+m+"ci"); //} hashSet.add(getId()); } System.out.println(hashSet.size()); System.out.println(getId()); System.out.println(System.currentTimeMillis()); System.out.println(UUID.randomUUID().toString()); if(UUID.randomUUID().toString().equals(UUID.randomUUID().toString())){ m++; System.out.println("重复了"+m+"ci"); } } }

【自动生成全局时间戳id的工具类】

    推荐阅读