高效缓存系统示例
博客专区 > JackY-Ji 的博客 > 博客详情
高效缓存系统示例
JackY-Ji 发表于2年前
高效缓存系统示例
  • 发表于 2年前
  • 阅读 22
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 实例此外主要说明读写锁在缓存系统中的使用

package com.fenxiang.jiyajie;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.*;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class CacheTest {

 private static Map<String,Object> cache = new HashMap<String,Object>();
 
 public static void main(String[] args) {
  
 }

 private ReadWriteLock rtl = new ReentrantReadWriteLock();//读写锁
 
 public Object getData(String key){
  rtl.readLock().lock();
  Object data = null;
  try{
           data = cache.get(key);
     if(data == null){
           rtl.readLock().unlock();
           rtl.writeLock().lock();
     try{
         if(data == null){//双重检查,避免等待的多个写锁重复写入数据
              data ="DB"; 
          }
     }finally{
         rtl.readLock().unlock();//在finally 中释放读锁
     }
         rtl.readLock().lock();
   }
  
  }finally{
   rtl.readLock().unlock();//在finally 中释放读锁
  }
  return data;
 }
}

共有 人打赏支持
粉丝 0
博文 15
码字总数 6800
×
JackY-Ji
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: