Java 緩衝池(使用Map實現)

來源:互聯網
上載者:User

標籤:

之前只是聽說過緩衝池,也沒有具體的接觸到,今天做項目忽然想到了用緩衝池,就花了一上午的時間研究了下緩衝池的原理,並實現了基本的緩衝池功能。

/** * 緩衝池 * @author xiaoquan * @create 2015年3月13日 上午10:32:13 * @see */public class CachePool {    private static CachePool instance;//緩衝池唯一執行個體    private Map<String,Object> cacheItems;//緩衝Map        private CachePool(){        cacheItems = new HashMap<String,Object>();    }    /**     * 得到唯一執行個體     * @return     */    public synchronized static CachePool getInstance(){        if(instance == null){            instance = new CachePool();        }        return instance;    }    /**     * 清除所有Item緩衝     */    public synchronized void clearAllItems(){        cacheItems.clear();    }    /**     * 擷取緩衝實體     * @param name     * @return     */    public synchronized Object getCacheItem(String name){        if(!cacheItems.containsKey(name)){            return null;        }        CacheItem cacheItem = (CacheItem) cacheItems.get(name);        if(cacheItem.isExpired()){            return null;        }        return cacheItem.getEntity();    }    /**     * 存放緩衝資訊     * @param name     * @param obj     * @param expires     */    public synchronized void putCacheItem(String name,Object obj,long expires){        if(!cacheItems.containsKey(name)){            cacheItems.put(name, new CacheItem(obj, expires));        }        CacheItem cacheItem = (CacheItem) cacheItems.get(name);        cacheItem.setCreateTime(new Date());        cacheItem.setEntity(obj);        cacheItem.setExpireTime(expires);    }    public synchronized void putCacheItem(String name,Object obj){        putCacheItem(name,obj,-1);    }        /**     * 移除快取資料     * @param name     */    public synchronized void removeCacheItem(String name){        if(!cacheItems.containsKey(name)){            return;        }        cacheItems.remove(name);    }        /**     * 擷取快取資料的數量     * @return     */    public int getSize(){        return cacheItems.size();    }}

 

public class CacheItem {private Date createTime = new Date();//建立緩衝的時間private long expireTime = 1;//緩衝期滿的時間private Object entity;//緩衝的實體public CacheItem(Object obj,long expires){this.entity = obj;this.expireTime = expires;}public boolean isExpired(){return (expireTime != -1 && new Date().getTime()-createTime.getTime() > expireTime);}        /**         * 省略getter、setter方法          */ }

 

Java 緩衝池(使用Map實現)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.