java生成唯一數字
public class ProfileUtil {
private static AtomicInteger counter = new AtomicInteger(0);
/**
* 長生訊息id
*/
public static long getAtomicCounter() {
if (counter.get() > 999999) {
counter.set(1);
}
long time = System.currentTimeMillis();
long returnValue = time * 100 + counter.incrementAndGet();
return returnValue;
}
private static long incrementAndGet() {
return counter.incrementAndGet();
}
public static void main(String[] args) {
System.out.println(ProfileUtil.getAtomicCounter());
}
}
但是請注意,如果將系統部署到叢集上面,情況有會有不同了,不同的伺服器叢集生成的這個數字,是有重合的概率的,因此,一般情況是,將叢集中的每個機器進行編碼,然後將機器編碼放在這個標識的前面以示區分。