java同步类容器与并发类容器

同步类容器

经过加锁来实现容器的复合操做(迭代、跳转及条件运算),同步类容器如(Vector、HashTable)在并发环境中进行复合操做容易产出ConcurrenModificationException异常。缘由在于当容器迭代的过程当中,被并发的修改了内容。这是由于在早起迭代器的设计中没有考虑并发的状况致使的、安全

同步类容器是经过Collections.synchronized***等工厂方法去建立实现的。底层使用传统的synchronized关键字进行同步处理。没法知足当今时代高并发的需求。并发

并发类容器

jdk5.0提供了多种并发类容器来替代同步类容器从而提升高并发处理能力。同步类容器是串行处理,虽然线程安全,但下降了并发性。ide

并发类容器使用ConcurrentHashMap代替HashTable,使用CopyOnWriterArrayList代替Vector,支持并发的CopyOnWriteArraySet及Queue高并发

ConcurrentHashMap内部使用段(Segment)来表示不一样部分,最大支持16Segment,在每一个Segment上有本身独立的锁,从而达到支持多并发的目的。而且在代码实现上大多共享变量使用了volatile声明。进一步提升性能性能

COW容器(Copy on write)写时复制容器,当进行添加是不直接在原有容器上进行添加,而是复制当前容器,待添加操做完成后,将以前容器的引用指向新的容器,从而实现读写分离,进而提升读的效率。线程