标签:JUC CopyOnWrite lock CopyOnWriteArrayList add Vector 源码
JUC:6_2解析CopyOnWrite、CopyOnWriteArrayList比Vector好在哪里
什么是解析CopyOnWrite
CopyOnWrite,简称COW,是计算机程序设计领域的一种优化策略
多个线程调用的时候,读取的时候是固定的,写入时覆盖,
读写分离,写时复制
CopyOnWriteArrayList比Vector好在哪里?
Vector add源码
public synchronized boolean add(E e) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = e;
return true;
}
CopyOnWriteArrayList源码
public boolean add(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
Object[] elements = getArray();
int len = elements.length;
Object[] newElements = Arrays.copyOf(elements, len + 1);
newElements[len] = e;
setArray(newElements);
return true;
} finally {
lock.unlock();
}
}
好在哪里?
CopyOnWriteArrayList比Vector的效率高,CopyOnWriteArrayList这个类的读取操作是不需要同步的,Vector读操作和写操作都是synchronized的。
通过源码,可以看到Vector的add方法是synchronized修饰的方法,整个方法体都被包围,而CopyOnWriteArrayList使用的更为轻便的Lock锁,灵活控制锁的范围,
标签:JUC,CopyOnWrite,lock,CopyOnWriteArrayList,add,Vector,源码 来源: https://blog.csdn.net/qq_41929714/article/details/123604011
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。