一、并发List
1、Vector
在java核心数据结构(一)——List类族一文中已经提到List类簇中ArrayList和Vector的主要区别就是Vector的大部分实现都支持线程安全,代码也展示了一部分。另外如果使用到ArrayList有需要进行线程安全控制,可以调用Collections.synchronizedList(arrayList)传入ArrayList。
2、CopyOnWriteArrayList
实现机制:当对象进行读操作时,由于对象未发生改变,无需进行加锁同步;执行写操作,试图改变对象时,则复制该对象先获取该对象的副本,对副本进行修改,最后将副本写回。这种实现方法减少了锁竞争,提高了高并发时读的性能,但写操作有所牺牲。
对比CopyOnWriteArrayList和Vector的get方法实现可以得知:
public E get(int index) {
return get(getArray(), index);
}
final Object[] ge