请你说明concurrenthashmap有什么优势以及1.7和1.8区别?

2019-09-16 17:44:44 浏览数 (3)

Concurrenthashmap线程安全的,1.7是在jdk1.7中采用Segment HashEntry的方式进行实现的,lock加在Segment上面。1.7size计算是先采用不加锁的方式,连续计算元素的个数,最多计算3次:

(1)如果前后两次计算结果相同,则说明计算出来的元素个数是准确的;

(2)如果前后两次计算结果都不同,则给每个Segment进行加锁,再计算一次元素的个数;

(3)1.8中放弃了Segment臃肿的设计,取而代之的是采用Node CAS Synchronized来保证并发安全进行实现,1.8中使用一个volatile类型的变量baseCount记录元素的个数,当插入新数据或则删除数据时,会通过addCount()方法更新baseCount,通过累加baseCount和CounterCell数组中的数量,即可得到元素的总个数.

0 人点赞