java怎样将数据保存到缓存中,之后再保存
来源:互联网 发布:恒扬数据副总经理 编辑:程序博客网 时间:2024/06/09 23:21
package com.henry;import java.util.HashMap;import java.util.Map;import java.util.Random;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class CacheDataTest { static Map<Integer,Object> dataMap=new HashMap<Integer,Object>(); static ReadWriteLock lock=new ReentrantReadWriteLock();//创建读写锁的实例 static Object getData(Integer key){ lock.readLock().lock();//读取前先上锁 Object val=null; try{ val=dataMap.get(key); if(val == null){ // Must release read lock before acquiring write lock lock.readLock().unlock(); lock.writeLock().lock(); try{ //可能已经由其他线程写入数据 if(val==null){ //dataMap.put(key, "");//query from db val=queryDataFromDB(key); } }finally{ //Downgrade by acquiring read lock before releasing write lock lock.readLock().lock(); // Unlock write, still hold read lock.writeLock().unlock(); } } }finally{ lock.readLock().unlock();//最后一定不要忘记释放锁 } System.out.println("get data key="+key+">val="+val); return val; } static Object queryDataFromDB(Integer key){ Object val=new Random().nextInt(1000); dataMap.put(key, val); System.out.println("write into data key="+key+">val="+val); return val; } public static void main(String[] args) { for(int i=0;i<10;i++){ new Thread(new Runnable(){public void run() { getData(new Random().nextInt(5)); }}).start(); } }}
阅读全文
0 0
- java怎样将数据保存到缓存中,之后再保存
- java Swing 将数据保存到指定文件中
- Android--将数据保存到SDCard中
- 将List数据保存到Excel中
- 将MATLAB数据保存到Excel中
- Android--将数据保存到SDCard中
- 将数据保存到文件中
- vue 将数据保存到vuex中
- java将集合保存到excel中
- 怎样将DataSet一次性保存到数据库中去?
- Java 读取excel指定行列数据以及将数据保存到txt文件中
- 将数据保存在服务器缓存中,不保存在数据库
- 【C#】将DataGridView数据保存到Excel中
- 快速将excel数据保存到Oracle数据库中
- 将数据集更改保存到数据库中
- 使用Spread.Net将数据保存到Text文件中
- DataSet 转 DataTable 将数据保存到excel中winform
- iOS开发将数据保存到内存中
- centOS6.5 Nginx无法解析php文件
- seo是否是前途未卜?
- 对PostgreSQL数据库结构的宏观理解
- LeetCode-Easy刷题(8) Remove Element
- CentOS下安装OpenOffice4.1.3
- java怎样将数据保存到缓存中,之后再保存
- SpringMVC+Hibernate+Maven+MySQL实现增删改查的一个小Demo
- node.js -buffer
- 利用雅虎小型企业服务平台的目录遍历漏洞查看客户的信用卡信息
- 鲜为人知的 Linux 命令(5)
- iOS 开发是否要采用 React Native?
- LeetCode-Easy刷题(9) Implement strStr()
- Spring AOP报错 error at ::0 name binding only allowed in target, this, and args pcds
- 冒泡排序