gpt4 book ai didi

java - 并发数据结构中非并发数据结构的线程安全

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:19 25 4
gpt4 key购买 nike

我在java中有这样的数据结构:

ConcurrentHashMap<String, Set<String>> objects; 

Set(HashSet) 不是并发数据结构。

多个线程可以安全地改变 ConcurrentHashMap,但是其中的 Set 又如何呢? Map中的Set对象是线程安全的吗?或者 ConcurrentHashMap 仅为自身提供线程安全性?

谢谢

最佳答案

Map 中的

Set 对象不是线程安全的。 Map 并不使其线程安全,只是因为它包含对集合的引用。

ConcurrentHashMap实现仅为其自身操作提供线程安全,例如放置、检索、删除、内容检查等。

如果同一个Set同时被多个线程修改,这些修改的结果是不可预测的。

如果您需要同步Set对象,您可以考虑使用ConcurrentHashMap的Set包装器:

Set<String> set = ConcurrentHashMap.newKeySet();

或者简单地说:

Set<String> set = ...;
set = Collections.synchronizedSet(set);

关于java - 并发数据结构中非并发数据结构的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55610226/

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