Spring—ConcurrentReferenceHashMap
来源:互联网 发布:钢结构图纸及数据图片 编辑:程序博客网 时间:2024/05/23 14:43
ConcurrentReferenceHashMap与ConcurrentHashMap的区别是ConcurrentReferenceHashMap能指定所存放对象的引用级别,适用于并发下Map的数据缓存。
注:Java四种对象引用级别:强引用、软引用、弱引用、虚引用
测试代码:
注:用弱引用来及时查看效果。
public class TestConcurrentReferenceHashMap { public static void main(String[] args) { ConcurrentReferenceHashMap map = new ConcurrentReferenceHashMap(16, ConcurrentReferenceHashMap.ReferenceType.WEAK); map.put("key","val"); System.out.println(map); System.gc(); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(map); }}
结果:
{key=val}{}Process finished with exit code 0
注:从下面ConcurrentReferenceHashMap的部分源码我们可以知道ConcurrentReferenceHashMap是基于Segment分段锁实现的,与JDK1.7的ConcurrentHashMap是一样的,与JDK1.8的ConcurrentHashMap是不一样的。
protected final class Segment extends ReentrantLock { private final ConcurrentReferenceHashMap<K, V>.ReferenceManager referenceManager = ConcurrentReferenceHashMap.this.createReferenceManager(); private final int initialSize; private volatile ConcurrentReferenceHashMap.Reference<K, V>[] references; private volatile int count = 0; private int resizeThreshold;}
阅读全文
0 0
- Spring—ConcurrentReferenceHashMap
- Spring ConcurrentReferenceHashMap简单说明
- Spring ConcurrentReferenceHashMap简单测试
- Spring—— Spring Core
- Spring学习1——Spring容器
- Spring学习笔记——Spring简介
- Spring备忘—— Spring AOP
- 菜鸟学习Spring——初识Spring
- 【spring配置】——spring配置数据源
- 【spring配置】——spring aop配置
- Spring学习笔记——spring概况
- Spring学习笔记 —— Spring Context
- 【Spring】——Spring Framework Introduction
- Spring入门——Spring IOC容器
- Spring笔记——初识Spring
- Spring笔记——Spring容器:ApplicationContext
- Spring学习笔记——Spring
- spring学习笔记——Spring概述
- [Err] ORA-01791: not a SELECTed expression 数据库错误 的原因与解决
- Java IO流学习总结
- Redis SortedSet实现原理
- Linux 之 SSH免密登陆之二 配置无效解析
- Tanimoto系数
- Spring—ConcurrentReferenceHashMap
- Android——实现ImageLoader工具类(附带修改圆形头像)
- typedef和define的作用域
- Ubifs 文件系统的制作和启动
- Golang 学习之路九:接口(Interface)
- glsl语言基础
- 算法:括号匹配(栈的应用)-数据结构(7)
- Java web Excel导入和导出
- init启动Native Service时出现Service xxxx needs a SELinux domain defined;