MemoryCacheCenter.java 1.35 KB
Newer Older
yanzg's avatar
yanzg committed
1 2
package com.yanzuoguang.util.cache;

yanzg's avatar
yanzg committed
3
import com.yanzuoguang.util.extend.ConfigBase;
yanzg's avatar
yanzg committed
4
import com.yanzuoguang.util.thread.ThreadHelper;
yanzg's avatar
yanzg committed
5
import com.yanzuoguang.util.thread.AbstractThreadList;
yanzg's avatar
yanzg committed
6 7 8 9

import java.util.List;
import java.util.Vector;

yanzg's avatar
yanzg committed
10 11
/**
 * 内存缓存中心,负责自动清除过期缓存
12
 *
yanzg's avatar
yanzg committed
13
 * @author 颜佐光
yanzg's avatar
yanzg committed
14
 */
yanzg's avatar
yanzg committed
15 16 17 18 19
public class MemoryCacheCenter {

    /**
     * 缓存的对象
     */
yanzg's avatar
yanzg committed
20
    public final static List<MemoryCache> CLEAR_LIST = new Vector<MemoryCache>();
yanzg's avatar
yanzg committed
21

yanzg's avatar
yanzg committed
22 23 24 25
    static {
        init();
    }

yanzg's avatar
yanzg committed
26
    /**
yanzg's avatar
yanzg committed
27
     * 初始化
yanzg's avatar
yanzg committed
28
     */
yanzg's avatar
yanzg committed
29 30 31 32 33 34 35 36
    private static void init() {
        // 缓存对象处理线程
        ThreadHelper.runThread(new Runnable() {
            @Override
            public void run() {
                do {
                    clear();
                    // 等待1秒
yanzg's avatar
yanzg committed
37
                    ThreadHelper.sleep(ConfigBase.MEMORY_CLEAR_TIMEOUT);
yanzg's avatar
yanzg committed
38 39 40 41
                } while (true);
            }
        });
    }
yanzg's avatar
yanzg committed
42

yanzg's avatar
yanzg committed
43 44 45 46
    /**
     * 间隔5秒执行
     */
    private static void clear() {
yanzg's avatar
yanzg committed
47 48
        // todo: 需要修改
        // 死循环处理
yanzg's avatar
yanzg committed
49
        AbstractThreadList<MemoryCache> threadList = new AbstractThreadList<MemoryCache>(1) {
yanzg's avatar
yanzg committed
50 51 52 53 54 55
            @Override
            public void run(MemoryCache item) {
                item.clearTimeout();
            }
        };
        threadList.add(CLEAR_LIST);
56
        threadList.waitRun(false);
yanzg's avatar
yanzg committed
57 58
    }
}