博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程进一步的理解之------------缓存机制
阅读量:7186 次
发布时间:2019-06-29

本文共 1009 字,大约阅读时间需要 3 分钟。

public class CacheDemo {    private Map
cache = new HashMap
(50); 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 { if (value == null) { // 保证不让后来的线程去加写锁 value = "aaaa";// 这是从数据库中取得值 } }finally { rwl.writeLock().unlock(); // 第一个线程释放写锁 } rwl.readLock().lock(); // 进而去读。其他线程开始加写锁,最后也会被释放 } }finally { rwl.readLock().unlock(); } return value; }}要实现一个缓存并不是那么容易的,要考虑很多种情况

转载地址:http://aoykm.baihongyu.com/

你可能感兴趣的文章
谷歌浏览器中,js首次打印,图片没显示
查看>>
设计自己解析XML字段,并反射到对应类
查看>>
linux 下安装maven + git直接编译项目
查看>>
oracle用sum函数实现累加
查看>>
java中创建对象的方法
查看>>
UNIX/Linux系统取证之信息采集案例
查看>>
Python知识点总结篇(五)
查看>>
一致性算法探寻(扩展版)1
查看>>
这几个 Chrome 的 Tab 增强插件你都用上了吗?
查看>>
Java中的浅拷贝与深拷贝
查看>>
微信小程序联盟:官方文档+精品教程+demo集合(6月9日更新,持续更新中……)...
查看>>
spring 事务的传播特性
查看>>
react学习(1)-Why React?
查看>>
RESTful风格的API接口开发教程
查看>>
用 Lua 实现一个微型虚拟机-基本篇
查看>>
php 安装 memcached 扩展出现 zlib 错误
查看>>
CentOS中服务程序随系统启动
查看>>
我的友情链接
查看>>
永久关闭selinux
查看>>
zTree 树使用$('#test').load("url"),后树不能使用
查看>>