package com.ezubo.global.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 利用锁机制 不适用于分布式场景 * Created by on 2015-12-29. */ public class Generator3 { private static Lock lock = new ReentrantLock(); private static final String DATE_FORMAT = "yyyyMMddHHmmss"; private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT); private static String forwardTime = ""; private static Long no = 1L; private Generator3(){ super(); } /** * 生成序列号 * @param prefix * @return */ public static String getSeqNo(String prefix){ lock.lock(); try{ String pfix = prefix == null ? "" : prefix; String currentTime = SIMPLE_DATE_FORMAT.format(new Date()); if(!currentTime.equals(forwardTime)){ no = 1L; } String serializeNo = FormatUtil.leftpad(no++ , "00000000"); forwardTime = currentTime; return pfix + currentTime + serializeNo; }finally { lock.unlock(); } } }
利用锁机制生成唯一序列号
猜你喜欢
转载自yuhaiwei-bj.iteye.com/blog/2267484
今日推荐
周排行