1. 程式人生 > >使用java程式碼實現簡單的ID自增的工具類

使用java程式碼實現簡單的ID自增的工具類

  在一些簡單的業務中可能需要一些ID.這些ID是使用java程式碼實現的並不是通過資料庫的自增實現的.下面是我寫的一個簡單的ID工具類,在使用的過程中你需要將最後一次的編號儲存下來,你可以建一張表來維護這個自增的ID

這個自增的ID生成是執行緒安全的,而且在一定執行緒競爭不是很激烈的情況下比synchronized的效率高其中count是一個類的成員變數,通過使用count.incrementAndGet()的方法實現ID自增操做,這個操做是一個原子操做所以這個ID生成是執行緒安全的.底層是通過CAS實現的.

 private static AtomicInteger count = new AtomicInteger();
/**
     * 傳入相應的字首生成自增的ID
     *
     * @param end     上一次結束的ID編號
     * @param groupID 字串
     * @param s       傳入字首
     * @return 生成自增的ID
     */
    public static String getQualityNum(String s, String groupID, int end) {
        count.set(end);
        count.incrementAndGet();
        Integer i = count.get();
        //獲取當前的年
        long nowTimeStamp = SKTools.getNowTimeStamp();
        DateStringInfo dateStrByTimestamp = SKTools.getDateStrByTimestamp(nowTimeStamp);
        String year = dateStrByTimestamp.getYear();
        //將傳入的字首與專案部以及年拼接在以一起
        String format = StrUtil.format("{}{}{}", s, groupID, year);
        String strNum = StrUtil.format("{}", 100000 + i);
        //將1擷取下來得到剩餘的
        String substring = strNum.substring(1);
        //進行拼接並返回
        return StrUtil.format("{}{}", format, substring);
    }

返回的結果
ZL29755296514049201800001
ZL29755296514049201800002