所有
边缘矢量类超过 ArrayList ,它是同步的,因此可以确保线程安全。但是,在CopyOnWriteArray和Vector之间,考虑到线程安全性和性能,应该首选什么。
答案 0 :(得分:9)
总的来说,它取决于读写操作的频率和性质,以及数组的大小。
您需要在上下文中进行基准测试才能确定,但这里有一些基本原则:
您可能还想考虑其他两个选项:
答案 1 :(得分:8)
这取决于使用模式 - 如果您的读取数比写入数多,请使用CopyOnWriteArrayList
,否则使用Vector
。
Vector
为每个操作引入了一个小的同步延迟,当CopyOnWriteArrayList
有更长的写入延迟(由于复制)但没有读取延迟时。
另一个考虑因素是迭代器的行为 - Vector
在迭代时需要显式同步(因此写操作不能同时执行),CopyOnWriteArrayList
没有。