ConcurrentHashMap.md、HashMap.md 内容修缮

pull/56/head
AmyliaY 5 years ago
parent 2741b0c702
commit d0065eb473

@ -161,4 +161,5 @@ public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements Concurre
}
}
```
**与JDK1.7在同步机制上的区别** 总结如下。JDK1.7 使用的是分段锁机制其内部类Segment 继承了 ReentrantLock将 容器内的数组划分成多段区域每个区域对应一把锁相比于HashTable确实提升了不少并发能力但在数据量庞大的情况下性能依然不容乐观只能通过不断的增加锁来维持并发性能。而JDK1.8则使用了 CAS乐观锁 + synchronized局部锁 处理并发问题,锁粒度更细,即使数据量很大也能保证良好的并发性。
**与JDK1.7在同步机制上的区别** 总结如下:
JDK1.7 使用的是分段锁机制其内部类Segment 继承了 ReentrantLock将 容器内的数组划分成多段区域每个区域对应一把锁相比于HashTable确实提升了不少并发能力但在数据量庞大的情况下性能依然不容乐观只能通过不断的增加锁来维持并发性能。而JDK1.8则使用了 CAS乐观锁 + synchronized局部锁 处理并发问题,锁粒度更细,即使数据量很大也能保证良好的并发性。

@ -95,6 +95,7 @@ public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,
// 对链表进行遍历,并统计链表长度
for (int binCount = 0; ; ++binCount) {
// 链表中不包含要插入的键值对节点时,则将该节点接在链表的最后
// JDK1.7中 新增的Node节点采用头插入而JDK1.8中改成了尾插入
if ((e = p.next) == null) {
p.next = newNode(hash, key, value, null);
// 如果链表长度达到阈值,则进化成红黑树

Loading…
Cancel
Save