Vector类的源码分析:
jdk7和jdk8中Vector类的源码也几乎一样,所以这里我们也是一起进行分析
- jdk7和jdk8中通过Vector()构造方法创建对象时,底层都是创建了长度为10的数组(Object [] elementDate)
- 在扩容方面Vector类扩容都是扩容为2倍
Vector是线程安全的,那么当我们的集合作为共享元素的话,这个时候我们如果是创建了ArrayList集合对象直接进行操作显然是不行的,因为我们的ArrayList是线程不安全的,那么这个时候我们就要使用Vector对象来作为共享资源吗?
- 显然这个时候我们使用Vector对象作为共享资源也是可以的,因为我们的Vector是线程安全的
- 但是在实际编程中我们还是使用ArrayList集合作为共享资源来使用,那么我们的ArrayList是线程不安全的,这个时候我们直接使用ArrayList是不行的,那么这个时候要使用到工具类Collections中的SynchronizedList(List< E> list)方法,通过synchronized(List< E> list)方法我们传入一个ArrayList对象就可以得到一个线程安全的ArrayList对象
- 这里的Collections是一个工具类
- Collections的全类名 : java.lang.Collections
- Collections类中的 synchronized(List< E> list)
- 这个方法中传入一个ArrayList集合就会得到一个线程安全的ArrayList对象
- 我们的ArrayList原本是线程不安全的,这个时候我们通过传入到synchronized(List < E> list)方法中我们就可以得到一个线程安全的ArrayList对象
- 这里的Collections是一个工具类
- 所以这里就说明即使我们是遇到List集合对象作为多个线程的共享资源时,我们也不使用Vector类
- 这个时候其实就反映出我们的Vector类中其实我们已经不怎么去使用了