标签:这一 图片 指定 返回 apt 关注 设置 锁对象 api
Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面就不具体分析源码了, 具体可以查看ArrayList中的源码分析.
1.主要字段
2.构造函数
3.增删改查
其他方法大部分类似, 不再赘述, 下面看下扩容机制的函数:
Vector是java.util包中的一个类。 SynchronizedList是java.util.Collections中的一个静态内部类。
在多线程的场景中可以直接使用Vector类,也可以使用Collections.synchronizedList(List list)方法来返回一个线程安全的List。
那么,到底SynchronizedList和Vector有没有区别,为什么java api要提供这两种线程安全的List的实现方式呢?
以下看 synchronizedList 部分源码:
从代码中, 我们可以看出:
但是, SynchronizedList中 listlterator方法并没有做同步处理, 但是在Vector却对该方法加了方法锁. 所以, 在使用SynchronizedList进行遍历的时候要手动加锁.
但是之后的但是, 如果想要把LinkedList变成线程安全的, 那么我们可以将已有的LinkedList直接转成SynchronizedList, 而不用改变它的底层数据结构, 这一点是Vector无法做到的, 因为Vector底层结构是使用数组的, 这一点是无法更改的.
总结两者区别如下:
可以关注一下鄙人的公众号, 谢谢各位了!
标签:这一 图片 指定 返回 apt 关注 设置 锁对象 api
原文地址:https://www.cnblogs.com/hujingnb/p/10181577.html