java - java线程安全-集合/列表

标签 java list sorting vector thread-safety

List<Integer> contacts = new Vector<Integer>();

Collections.sort(contacts);

好吧,我知道 vector 是线程安全的,但是如果我执行上述操作,会出现任何问题吗?

最佳答案

vector is thread safe

它的每个方法都是线程安全的。但是 Collections.sort 将迭代 vector ,这不是原子操作。特别是Vector's javadoc状态:

if the vector is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException.

因此,如果您的 vector 在排序时被另一个线程修改,您将收到异常。

如果多个线程可以访问您的结构,则替代方案包括:制作防御性副本或使用并发结构(例如 CopyOnWriteArrayList)。

关于java - java线程安全-集合/列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404145/

相关文章:

java - 我的线程中出现 NoClassDefFoundError 异常

sorting - 如何在grails列表中排序?

azure - 在 Azure API for FHIR 中搜索资源时的默认排序是什么?

java - 如何在 Android 中使用 WordPress 的 WTI Like Post?

java - 如何将 NsLookup 程序的输出获取到单独程序中的 JTextArea 中

java - 我想将我的 jar 文件放入 html 代码中

android - 如何使用 dart/flutter 中的共享首选项保存和获取列表列表

r - 将不对称向量列表转换为矩阵

python - 如何从列表中删除所有非 float 数字和重复项

ios - 如何按整数值对NSDictionary排序?