gpt4 book ai didi

java - Guava ImmutableSet.copyOf() 线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 22:10:34 25 4
gpt4 key购买 nike

我想知道这个调用是否是线程安全的。例如,如果我有一组 s:

Set<String> s = new HashSet<>();

还有两个线程A和B,线程A修改集合:

for (int i = 0; i < 1234; i++) {
// add, remove from s
}

当线程 B 从 s 创建 ImmutableSets 时:

for (int i = 0; i < 5678; i++) {
Set<String> newS = ImmutableSet.copyOf(s);
}

是否可以安全地假设每次调用 ImmutableSet.copyOf() 时我都会及时获得 s 的有效状态的不可变集?是否会发生任何类型的异常(如 ConcurrentModificationException)?

如果它是线程安全的,它是如何在不锁定集合的情况下实现的?

最佳答案

相关的问题不是 copyOf 是否安全——而是它从 复制的集合是否安全,特别是它创建的 Iterators 是否安全它的 iterator() 方法是线程安全的。对于 HashMap,答案是否定的。

关于java - Guava ImmutableSet.copyOf() 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com