本节介绍一个常用的并发容器 - ConcurrentHashMap,它是HashMap的并发版本,与HashMap相比,它有如下特点:

  • 并发安全

  • 直接支持一些原子复合操作

  • 支持高并发、读操作完全并行、写操作支持一定程度的并行

  • 与同步容器Collections.synchronizedMap相比,迭代不用加锁,不会抛出ConcurrentModificationException

  • 弱一致性

我们分别来看下。

并发安全

我们知道,HashMap不是并发安全的,在并发更新的情况下,HashMap的链表结构可能形成环,出现死循环,占满CPU,我们看个例子:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

public static void unsafeConcurrentUpdate() {    final Map<Integer, Integer> map = new HashMap<>();    for (int i = 0; i < 100; i++) {
        Thread t = new Thread() {
            Random rnd = new Random();

  &nb
        
		

网友评论