簡單隊列緩存

public enum SequenceEnum {
    SEQUENCE;

    SequenceEnum() {
    }

    private static final ConcurrentLinkedQueue<String> cache = new ConcurrentLinkedQueue<>();

    private static final ReentrantLock lock = new ReentrantLock();

    /**
     *
     * 出隊
     */
    public String poll() {
        try {
            lock.lock();
            if (cache.size() < 100) {
                //必須調用其他方法增加隊列數量
                offer(SequenceUtil.getSequenceArray());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
        return cache.poll();
    }
    /**
     *
     * 入隊
     */
    public void offer(String[] sequenceArray) {
        for (String sequence : sequenceArray) {
            cache.add(sequence);
        }
    }

    /**
     *
     * 隊列數量太大,不可使用,因爲遍歷整個隊列,耗時過長
     */
    public int size() {
        return cache.size();
    }

    /**
     *
     * 判空使用此方法
     */
    public boolean isEmpty(){
        return cache.isEmpty();
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章