定时清理缓存

接口
public interface Cache<K, V> {

void put(K key, V value);

void remove(K key);

V get(K key);

}

实现
public class DefaultCache<K,V> implements Cache<K,V> {

private ScheduledExecutorService scheduledExecutorService= Executors.newScheduledThreadPool(1);

private ConcurrentHashMap<K,V> concurrentHashMap = new ConcurrentHashMap<>();

public DefaultCache(){
    scheduledExecutorService.schedule( new RefreshJob(),10000, TimeUnit.MILLISECONDS);
}

@Override
public void put(K key, V value) {
    concurrentHashMap.put(key,value);
}

@Override
public V get(K key) {
    return concurrentHashMap.get(key);
}

@Override
public void remove(K key) {
    concurrentHashMap.remove(key);
}

/**
 * 执行定时刷新
 */
private class RefreshJob implements Runnable{

    @Override
    public void run() {
        System.out.println("begin------------");
        Set<K> keys = concurrentHashMap.keySet();
        for(K key: keys){
            remove(key);
        }
        System.out.println("end------------");
    }
}

}
Test
public class CacheTest {
public static void main(String[] args) throws InterruptedException {
DefaultCache<String, String> defaultCache = new DefaultCache<>();

    defaultCache.put("keyTest1", "keyTest1"+ LocalDateTime.now().toString());
    defaultCache.put("keyTest2", "keyTest2" + LocalDateTime.now().toString());
    defaultCache.put("keyTest3", "keyTest3" + LocalDateTime.now().toString());
    defaultCache.put("keyTest4", "keyTest4" + LocalDateTime.now().toString());
    defaultCache.put("keyTest5", "keyTest5" + LocalDateTime.now().toString());
    defaultCache.put("keyTest6", "keyTest6" + LocalDateTime.now().toString());

    while (true) {
        System.out.println("keyTest1:"+defaultCache.get("keyTest1"));
        System.out.println("keyTest2:"+defaultCache.get("keyTest2"));
        System.out.println("keyTest3:"+defaultCache.get("keyTest3"));
        System.out.println("keyTest4:"+defaultCache.get("keyTest4"));
        System.out.println("keyTest5:"+defaultCache.get("keyTest5"));
        System.out.println("keyTest6:"+defaultCache.get("keyTest6"));

        Thread.sleep(1000);
    }

}

}
Test结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值