CopyOnWriteArrayList简单实现
常用方法和ArrayList差不多;但是没有capacity;
size方法实现一样;
add方法:先上锁,别人就不能往里面防值了;
拿到一个数组,定义len为它的长度,然后拷贝这个数组,长度为旧数组长度加一,就是因为要加入一个值,这个过程就像CAS的前半部分,拿出来改了放回去。新数组的最后一个值就是新加入的值。
写入过程是安全的,因为加锁了
indexof方法没有加锁,isEmpty没有加锁,contains没有加锁,lastIndexOf也没有加锁,toArray没有加锁,get没有加锁,是不安全的
CopyOnWriteArrayList的Iterator(迭代器)只支持遍历,添加删除什么的都不支持
09-16