roa*_*oul 4 java synchronization list vector
如果多个线程访问向量,vector将确保只有一个线程可以同时访问该向量.SynchronizedList是相同的.那有什么区别?如何在某些同步情况下选择?
ATr*_*bka 11
这种冗余的主要原因是与为旧版Java开发的java代码向后兼容.
如果我在Java 1.2 Collections之前没有正确记住它是一个单独的库并且不是标准JDK/JRE的一部分.
此时,唯一一个由SDK提供的数据结构列表就是Vector.在Collections中,开发人员以多种方式改进了Vector结构.特别是,他们删除了同步,因为在大多数情况下它被证明是不必要的.
他们仍然想要一种简单的方法来创建像集合一样的列表的同步版本.因此他们引入了SynchronizedList.
现在,Vector和SynchronizedList之间的主要区别在于您使用它的方式.通过调用Collections.synchronizedList,您可以创建当前List实现的包装器,这意味着您不会将数据复制到另一个数据结构,并保持底层结构的完整性.例如,如果你想要它背后的LinkedList结构而不是ArrayList.
如果是Vector,您实际上将数据复制到新列表,如结构Vector.因此,如果之前有一个列表,效率会降低,但如果之前没有任何数据结构,那么您可能希望使用Vector,因为它不会为每个方法调用添加方法包装成本.向量的另一个缺点是你不能保留替代的底层结构(比如LinkedList),你总是使用Vector本身实现的东西.
| 归档时间: |
|
| 查看次数: |
7199 次 |
| 最近记录: |