最常见的同步容器有Vector和HashTable这两种,实现的原理和List和Map类似,唯一区别就在于他们每个方法都加上了synchronized关键字,用于保障多线程访问下的线程安全问题
CopyOnWrite
写时复制容器是一种典型的并发容器,具体的实现思想是读写分离。就是读的时候没有任何限制,但写操作必须上锁,通过源码查看是采用了可重入锁,将原有的数组进行拷贝,然后对其进行修改,最后将原有的数组的引用进行覆盖。这样保证了并发读取数据,这种类型的容器适用与改动量较小的场景,因为内部实现采用了Arrays.clone方法,它的实现就是复制数据,如果修改频繁,那么会不断的申请空间,造成频繁GC,另外就是一致性问题,若是在修改时,有线程在读取数据,但那时正在读取的是旧的数组,无法保证强一致性
ConcurrentSkipListMap
采用的是跳表结构,与redis的类似,另外key不允许为null
