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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲日本在线观看视频| 亚洲综合色成在线播放| 久久久久久久久亚洲| 亚洲人成网站在线观看播放动漫| 亚洲国产精品成人AV在线| 久久精品成人免费网站| 国产成人青青热久免费精品| 亚洲色图.com| 一级做a爰黑人又硬又粗免费看51社区国产精品视| 午夜视频免费在线观看| 亚洲国产精品自在拍在线播放 | 国产免费人人看大香伊| 亚洲国产成人超福利久久精品| 蜜臀AV免费一区二区三区| 国产偷国产偷亚洲清高动态图| 亚洲高清一区二区三区| 91久久精品国产免费一区| 中文亚洲AV片不卡在线观看| 成在人线av无码免费高潮喷水| 亚洲第一福利网站在线观看| 亚洲一区二区三区免费| 国产免费69成人精品视频| 九九热久久免费视频| 亚洲精品在线视频| 国产亚洲精品美女久久久久久下载| 曰批视频免费30分钟成人| 亚洲人成依人成综合网| a毛片全部免费播放| 亚洲一区精品伊人久久伊人 | 最近中文字幕免费完整| 伊人久久亚洲综合影院首页| 猫咪免费人成网站在线观看| 亚洲色精品VR一区区三区 | 最新中文字幕免费视频| 91亚洲视频在线观看| 国产精品成人无码免费| 久久这里只精品国产免费10 | 亚洲成av人片在线看片| 91免费福利精品国产| 亚洲欧洲av综合色无码| 免费精品一区二区三区在线观看|