800.什么是同步容器和并发容器的实现?

  1. 同步容器
    1. 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。
    2. 锁的粒度为当前对象整体。
    3. 迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。
  2. 并发容器
    1. 主要代表有ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentSkipListMap、ConcurrentSkipListSet。
    2. 锁的粒度是分散的、细粒度的,即读和写是使⽤不同的锁。
    3. 迭代器具有弱⼀致性,即可以容忍并发修改,不会抛出ConcurrentModificationException。

ConcurrentHashMap
采⽤分段锁技术,同步容器中,是⼀个容器⼀个锁,但在ConcurrentHashMap中,会将hash表的数组部分分成若⼲段,每段维护⼀个锁,以达到⾼效的并发访问;