<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
    數(shù)據(jù)加載中……

    一個簡單的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) {
    ??????????????? // 當(dāng)前時間在設(shè)定的過期時間之前,表示還沒有過期。
    ??????????????? // 如果還沒過期,那么就返回。
    ??????????????? 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工具類,支持多線程[未登錄]  回復(fù)  更多評論   

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 啦啦啦中文在线观看电视剧免费版| 免费大片在线观看网站| 亚洲第一综合天堂另类专| 免费观看亚洲人成网站| 国产在线精品免费aaa片| 亚洲国产日韩精品| 中文字幕亚洲激情| 免费观看的毛片大全| 一区二区三区免费在线视频 | 一区二区三区观看免费中文视频在线播放 | 免费黄色小视频网站| 久久精品视频免费| 色屁屁在线观看视频免费| 亚洲色大成网站www永久| 日韩亚洲国产二区| 最近2022中文字幕免费视频| 深夜a级毛片免费视频| 久久亚洲AV成人无码| 久久精品国产亚洲精品| 成年人在线免费看视频| 久久精品电影免费动漫| 无码毛片一区二区三区视频免费播放 | a级毛片高清免费视频就| 亚洲国产精华液2020| 激情内射亚洲一区二区三区| 亚洲精品和日本精品| 成全高清视频免费观看| 热re99久久6国产精品免费| 大片免费观看92在线视频线视频| 亚洲日本人成中文字幕| 亚洲国产精品成人久久| 亚洲成A人片在线观看中文| 毛片免费视频观看| 51视频精品全部免费最新| 中国一级毛片视频免费看| 美女视频黄a视频全免费网站色| 精品日韩99亚洲的在线发布| 久久久亚洲欧洲日产国码aⅴ| 亚洲熟妇av一区二区三区| 亚洲人成色77777在线观看大| 日韩人妻无码免费视频一区二区三区|