package cn.lyy.hibernate.many2one;

 import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock; public class MultiCacheDemo { private Map<String, Object> cache = new HashMap<String,Object>();
public static void main(String args[]){ } private ReadWriteLock rwl = new ReentrantReadWriteLock();
public Object getData(String key){
rwl.readLock().lock();
Object value = null;
try{
value = cache.get(key);
if(value == null){
rwl.readLock().unlock();
rwl.writeLock().lock();
try{
//因为如果同时又多个线程在读数据的话,可能会同时发现value
//为空,所以应该再在这里加一个if语句判断value是否为空
if(value == null){ value = "aaaa"; //实际是去queryDB(); }
}finally{
rwl.writeLock().unlock();
}
rwl.readLock().lock();
}
}finally{
rwl.readLock().unlock();
}
return value;
}
}

最新文章

  1. 51Nod 1010 只包含因子2 3 5的数 Label:None
  2. leetcode刷题全纪录(持续更新)
  3. BizTalk开发系列(六) BizTalk开发简述
  4. javascript 封装(给自己看)
  5. 20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
  6. django中嵌入百度editor插件
  7. 锁_rac环境kill锁表会话后出现killed状态(解决)
  8. codevs 1049 棋盘染色
  9. HashSet和LinkedHashSet特点.
  10. Leetcode OJ : Evaluate Reverse Polish Notation Stack C++ solution
  11. iOS设计模式解析(二)抽象工厂方法
  12. poj 2411 Mondriaan&#39;s Dream 轮廓线dp
  13. 如何使用C API来操作UCI
  14. Android 开发笔记___EditText__文本编辑框
  15. Zabbix实战-简易教程--通过公众平台企业号发送短信
  16. 对Linux0.11 中 进程0 和 进程1分析
  17. CF Manthan, Codefest 16 B. A Trivial Problem
  18. Unity --- 在原目录中,将选中的Texture剥离为rgb和alpha
  19. Postman 安装及使用入门教程 (谷歌浏览器插件版)
  20. MVC5笔记

热门文章

  1. MySQL删除重复记录的方法
  2. Windows环境下安装IPython NoteBook
  3. linux 获取系统屏幕分辨率
  4. spring mvc DispatcherServlet详解前传---HttpServletBean类
  5. Android 开源项目 eoe 社区 Android 客户端(转)
  6. haproxy主配置文件
  7. noip 2012 国王游戏(贪心+高精)
  8. codevs 1378 选课 (树形DP)
  9. C#截取字符串的方法小结
  10. VI文件编辑操作说明