美文网首页
线程安全的无序set

线程安全的无序set

作者: M_lear | 来源:发表于2022-07-25 17:59 被阅读0次

有如下4种选择:

  1. Collections.synchronizedSet(new HashSet<>())
  2. new CopyOnWriteArraySet<>()
  3. Collections.newSetFromMap(new ConcurrentHashMap<>())
  4. ConcurrentHashMap.newKeySet()

Collections.synchronizedSet(new HashSet<>())
since 1.2
锁粒度大,不推荐使用。

new CopyOnWriteArraySet<>()
since 1.5
基于CopyOnWriteArrayList实现,适合遍历操作远多于写操作的场景。

Collections.newSetFromMap(new ConcurrentHashMap<>())
since 1.6
通过传入线程安全的map构建线程安全的set。

ConcurrentHashMap.newKeySet()
since 1.8
基于ConcurrentHashMap构建的线程安全的set。
一般情况下,推荐这种方式。
和上一种方式相比,优势可以参考:ConcurrentHashMap.newKeySet() vs Collections.newSetFromMap()

相关文章

网友评论

      本文标题:线程安全的无序set

      本文链接:https://www.haomeiwen.com/subject/nhzgirtx.html