<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 | 新手

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品另类激情久久久免费| 最新精品亚洲成a人在线观看| 色婷婷精品免费视频| 亚洲精品自在在线观看| 一二三四免费观看在线电影 | 亚洲国产精品无码久久一线| 久久国产免费福利永久| 日韩在线视频线视频免费网站| 亚洲蜜芽在线精品一区| 亚洲一级片内射网站在线观看| 中文字幕免费在线| 免费人成又黄又爽的视频在线电影| 亚洲国产人成在线观看69网站| 四虎影视免费永久在线观看| 麻豆成人久久精品二区三区免费| 青青青亚洲精品国产| 精品亚洲麻豆1区2区3区| 一级毛片直播亚洲| 久久受www免费人成_看片中文| 中文字幕免费在线播放| 亚洲码欧美码一区二区三区| 亚洲成a人片在线观看无码专区| 日本一道一区二区免费看| 性xxxx视频免费播放直播 | 91视频国产免费| 免费无码又爽又刺激网站| 亚洲欧美国产国产综合一区| 久久精品国产亚洲av日韩| 亚洲综合无码精品一区二区三区| 夫妻免费无码V看片| 18禁止看的免费污网站| 丁香花在线视频观看免费| 噜噜噜亚洲色成人网站| 亚洲日韩精品国产一区二区三区| 亚洲欧洲日产国产综合网| 日韩精品亚洲aⅴ在线影院| 又黄又爽无遮挡免费视频| 成人奭片免费观看| 成人免费观看一区二区| 午夜老司机永久免费看片| 中文字幕无码免费久久|