gpt4 book ai didi

java - Collections.newSetFromMap(»ConcurrentHashMap«) 与 Collections.synchronizedSet(»HashSet«)

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:36 25 4
gpt4 key购买 nike

显然,有两种方法可以获得 thread-safe HashSet使用 Java 的 Collections 的实例实用类。

我问:

  • 它们有何不同?
  • 在什么情况下,哪个优先于另一个?

最佳答案

你可能想到的是

Set<Type> set = Collections.newSetFromMap(new ConcurrentHashMap<Type, Boolean>());

这支持并发更新和读取。它的迭代器不会抛出 ConcurrentModicationException。在哪里

Set<Type> set = Collections.synchronizedSet(new HashSet<Type());

重量更轻,但一次只允许一个线程访问集合。如果您想对其进行迭代,则需要显式锁定该集合,并且如果您不以安全的方式更新它(在对其进行迭代时),您仍然可以获得 CME

关于java - Collections.newSetFromMap(»ConcurrentHashMap«) 与 Collections.synchronizedSet(»HashSet«),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350723/

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