<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java愛好者

    一個堅定的Java愛好者,歡迎和我討論
    隨筆 - 7, 文章 - 8, 評論 - 6, 引用 - 0
    數據加載中……

    一個簡單的Cache工具類,支持多線程


    import java.util.Calendar;
    import java.util.HashMap;
    import java.util.Hashtable;

    public class CacheHelper {
    ??? public final static int default_interval_second = 20;
    ??? public static boolean?? ISDEBUG???????????????? = true;
    ??? private static HashMap? map???????????????????? = new HashMap();
    ??? private static Object?? obj???????????????????? = new Object();

    ??? public static ICache getCache(String uniquekey) {
    ??????? synchronized (obj) {
    ??????????? ICache ic = (ICache) map.get(uniquekey);
    ??????????? if (ic == null) {
    ??????????????? ic = new CacheEntity(uniquekey);
    ??????????????? map.put(uniquekey, ic);
    ??????????? }
    ??????????? return ic;
    ??????? }
    ??? }

    ??? public interface ICache {
    ??????? Object get();

    ??????? Object get(long timestamp);

    ??????? void set(Object obj);

    ??????? void set(long timestamp, Object obj);

    ??????? void clear(String regx);

    ??????? void clearAll();
    ??? }

    ??? private static class CacheEntity implements ICache {
    ??????? private Hashtable hm??????? = new Hashtable();
    ??????? private Object??? uniquekey = this;
    ??????? private long????? timestamp = Long.MIN_VALUE;

    ??????? public CacheEntity(Object uniquekey) {
    ??????????? this.uniquekey = uniquekey;
    ??????? }

    ??????? public Object get(long timestamp) {
    ??????????? if (timestamp <= this.timestamp) {
    ??????????????? // 當前時間在設定的過期時間之前,表示還沒有過期。
    ??????????????? // 如果還沒過期,那么就返回。
    ??????????????? Object obj = hm.get(uniquekey);
    ??????????????? if (ISDEBUG && obj != null) {
    ??????????????????? // 輸出日志。
    ??????????????????? System.out.println("[" + timestamp + "][Reading cache][" + uniquekey + "]...");
    ??????????????? }
    ??????????????? return obj;
    ??????????? }
    ??????????? else {
    ??????????????? // 清理垃圾。
    ??????????????? hm.remove(uniquekey);
    ??????????????? return null;
    ??????????? }
    ??????? }

    ??????? public void set(long timestamp, Object obj) {
    ??????????? this.timestamp = timestamp;
    ??????????? hm.put(uniquekey, obj);
    ??????? }

    ??????? public Object get() {
    ??????????? Calendar cal = Calendar.getInstance();
    ??????????? return get(cal.getTimeInMillis());
    ??????? }

    ??????? public void set(Object obj) {
    ??????????? Calendar cal = Calendar.getInstance();
    ??????????? cal.add(Calendar.SECOND, default_interval_second);
    ??????????? set(cal.getTimeInMillis(), obj);
    ??????? }

    ??????? public void clear(String regx) {
    ??????????? java.util.Enumeration keys = hm.keys();
    ??????????? while (keys.hasMoreElements()) {
    ??????????????? String key = (String) keys.nextElement();
    ??????????????? if (key.matches(regx)) {
    ??????????????????? hm.remove(key);
    ??????????????? }
    ??????????? }
    ??????? }

    ??????? public void clearAll() {
    ??????????? hm.clear();
    ??????? }
    ??? }
    }

    posted on 2006-08-03 09:29 JStar 閱讀(1275) 評論(1)  編輯  收藏

    評論

    # re: 一個簡單的Cache工具類,支持多線程[未登錄]  回復  更多評論   

    我覺得寫的一般
    有很多問題存在
    2009-10-09 15:56 | 新手

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 性感美女视频在线观看免费精品 | 亚洲小说区图片区| 亚洲福利精品电影在线观看| 亚洲精品伊人久久久久| 国产99精品一区二区三区免费| 男的把j放进女人下面视频免费| 久久久久亚洲?V成人无码| 男人j进女人p免费视频| 国产一卡二卡≡卡四卡免费乱码| 亚洲国产精品ⅴa在线观看| 四虎影院免费视频| 青娱乐在线免费观看视频| 婷婷亚洲天堂影院| 久久精品成人免费观看97| 亚洲成色WWW久久网站| 高清一区二区三区免费视频| 亚洲欧洲国产日韩精品| 69式互添免费视频| 亚洲女女女同性video| 免费日韩在线视频| 日韩精品无码免费专区网站| 亚洲成a人无码av波多野按摩| 黄色三级三级三级免费看| 国产亚洲精品高清在线| 亚洲视频免费在线观看| 久久精品国产亚洲av麻豆图片| 麻豆国产入口在线观看免费| 一区免费在线观看| 亚洲2022国产成人精品无码区| 青娱乐免费在线视频| 亚洲a无码综合a国产av中文| 亚洲综合图色40p| 免费黄色网址网站| 香港一级毛片免费看| 亚洲精品无码专区久久久 | 一区二区三区精品高清视频免费在线播放 | 国产精品玖玖美女张开腿让男人桶爽免费看| 中文字幕在亚洲第一在线| 久久w5ww成w人免费| 国产精品亚洲小说专区| 久久精品九九亚洲精品天堂|