Java中Vector如何实现List的并发访问机制?
- 内容介绍
- 文章标签
- 相关推荐
在Java浩如烟海的集合类库中,Vector算得上是一位资历颇深的“老将”。如果你翻开JDK 1.0的源码,会发现它早已屹立在那里。只是因为现代Java开发的演进, 这位老将似乎逐渐淡出了主流视野,取而代之的是ArrayList和CopyOnWriteArrayList等后起之秀。 我深信... 但不可否认的是Vector在处理多线程并发访问时依然有其独特的教科书般的意义。今天我们就抛开那些枯燥的定义, 像拆解一台老式收音机一样,Vector究竟是如何实现List的并发访问的,以及为什么它在如今的高并发场景下显得有些“力不从心”。
Vector的实现原理初探
我们要理解Vector的并发机制,得看清它的“真面目”。从类的定义上来看, Vector继承自AbstractList一边实现了ListRandomAccessCloneable以及java.io.Serializable接口。这看起来和ArrayList简直像是一个模子里刻出来的,对吧?确实它们在底层数据结构上有着惊人的相似度。
如果你点开Vector的源码, 最引人注目的莫过于那几个核心成员变量:
protected Object elementData;
protected int elementCount;
protected int capacityIncrement;
将心比心... 这里的elementData就是一个对象数组,用来存放真正的数据;elementCount记录了当前数组里实际有多少个元素。这和ArrayList的套路如出一辙。
在Java浩如烟海的集合类库中,Vector算得上是一位资历颇深的“老将”。如果你翻开JDK 1.0的源码,会发现它早已屹立在那里。只是因为现代Java开发的演进, 这位老将似乎逐渐淡出了主流视野,取而代之的是ArrayList和CopyOnWriteArrayList等后起之秀。 我深信... 但不可否认的是Vector在处理多线程并发访问时依然有其独特的教科书般的意义。今天我们就抛开那些枯燥的定义, 像拆解一台老式收音机一样,Vector究竟是如何实现List的并发访问的,以及为什么它在如今的高并发场景下显得有些“力不从心”。
Vector的实现原理初探
我们要理解Vector的并发机制,得看清它的“真面目”。从类的定义上来看, Vector继承自AbstractList一边实现了ListRandomAccessCloneable以及java.io.Serializable接口。这看起来和ArrayList简直像是一个模子里刻出来的,对吧?确实它们在底层数据结构上有着惊人的相似度。
如果你点开Vector的源码, 最引人注目的莫过于那几个核心成员变量:
protected Object elementData;
protected int elementCount;
protected int capacityIncrement;
将心比心... 这里的elementData就是一个对象数组,用来存放真正的数据;elementCount记录了当前数组里实际有多少个元素。这和ArrayList的套路如出一辙。

