zoukankan      html  css  js  c++  java
  • 模拟缓存

    菜鸟一枚,不要介意,同类似的还有好多代码,不要喷我!

    public class CacheTest {
    //定义一个hashmap,中有key value
    private HashMap<String, String> cHashMap = new HashMap<String,String>();
    //创建线程读写
    private ReentrantReadWriteLock rw = new ReentrantReadWriteLock();
    //设置value的初始值
    private String value = null;

    private String getCache(String key){
    /*//获取当前缓存中的key
    value= cHashMap.get(key);
    //如果缓存中的value为空
    if (value == null) {
    //则在数据库中进行查询,然后放入其中,进行缓存
    value = "hello"; // 此处的数据可以从数据跨中进行查询
    cHashMap.put(key, value);
    }
    //返回value
    */
    //上锁
    rw.readLock().lock();

    try {
    //获取缓存中的key值
    value = cHashMap.get(key);
    //判断value是否为空,如果不为空进行操作
    if (value == null) {
    //进行读的解锁
    rw.readLock().unlock();
    //进行写的上锁
    rw.writeLock().lock();
    try {
    //判断value是否为空
    if (value == null) {
    //此处数据可以在数据中进行查询
    value = "hello";
    //此处可以使赋值操作持久化到数据库
    cHashMap.put(key, value);
    }
    } finally {
    //写数据的解锁
    rw.writeLock().unlock();
    }

    }
    } finally {
    //读数据解锁
    rw.readLock().unlock();
    //写数据上锁
    rw.writeLock().lock();
    }
    return value;
    }
    }

  • 相关阅读:
    k8s 组件介绍-kube-controller-manager
    k8s 组件介绍-API Server
    ELK+filebeat+redis 日志分析平台
    Logstash配置文件详情
    Logstash,Fluentd, Logtail对比伤害
    公司redis
    Linux之网络ping(unknown host)故障及yum no more mirrors to try
    Linux思维导图之计划任务
    Linux思维导图之进程管理
    Linux思维导图之网络管理
  • 原文地址:https://www.cnblogs.com/zlazm/p/7896318.html
Copyright © 2011-2022 走看看