同步类容器

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

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

并发类容器

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

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

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

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