您现在的位置是:首页 > 文章详情

Java多线程进一步的理解之------------缓存机制

日期:2018-08-05点击:327
public class CacheDemo { private Map<String,Object> cache = new HashMap<String,Object>(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; } } 要实现一个缓存并不是那么容易的,要考虑很多种情况
原文链接:https://yq.aliyun.com/articles/625763
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章