package com.keyware.shandan.common.util;

import java.util.concurrent.atomic.AtomicLong;

/**
 * ID生成器
 *
 * @author GuoXin
 */
public class IDGenerator {
    private final static AtomicLong TEMP_TIME = new AtomicLong(System.currentTimeMillis());
    private final static AtomicLong STEP = new AtomicLong(1000);

    /**
     * <p>获取一个ID</p>
     * <p>ID的生成规则：当前时间戳（毫秒数）+ 自增的数值（该数值至少4位，且最小为1000，当毫秒数发生变化后，自增数重置到1000并重新计数），</p>
     * @return ID
     */
    public static String getId() {
        long time = System.currentTimeMillis();
        if (TEMP_TIME.get() < time) {
            TEMP_TIME.set(time);
            STEP.set(1000);
        }
        STEP.getAndIncrement();
        return TEMP_TIME + "" + STEP;
    }
}
