为啥线程安全的List推荐使用CopyOnWriteArrayList,不是Vector?【一分钟让你看明白】

本文分析了为什么线程安全的List推荐使用CopyOnWriteArrayList而非Vector。CopyOnWriteArrayList通过写时复制策略提高读操作效率,避免了Vector频繁扩容导致的空间浪费。同时,CopyOnWriteArrayList的读操作无需加锁,进一步提升了性能。
摘要由CSDN通过智能技术生成

推荐学习

为啥线程安全的List推荐使用CopyOnWriteArrayList,不是Vector?

为什么线程安全的List推荐使用CopyOnWriteArrayList,而不是Vector?

注:本系列文章中用到的jdk版本均为java8

相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析一下Vector的源码。

一、Vector集合源码简析

由于本文的重点不是Vector集合,因此只是简单地分析一下Vector的初始化方法和添加元素的方法。

Vector的底层实现和ArrayList一样,都是由数组实现的。

Vector的主要变量如下:

/**
 * 存放元素的数组
 */
protected Object[] elementData;
/**
 * 元素个数
 */
protected int elementCount;
/**
 * 扩容自增容量大小
 */
protected int capacityIncrement;

1.1 Vector初始化

Vector的初始化提供了三个方法,除了可以指定初始容量的大小,还可以指定扩容容量的大小。构造器分别如下:

无参构造器

public Vector() {
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值