Java--Set--线程安全的操作方法--实例

阅读 53

2022-02-15


简介

        本文用示例介绍Java中的Set的线程安全的操作方法。

线程安全的操作方法

方法

示例

原理

优缺点


Collections

.synchronizedSet(List)


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

Object mutex = new Object()。对此对象使用synchronized

JUC中的CopyOnWriteSet

CopyOnWriteSet<String> set= new CopyOnWriteSet<String>();

基于CopyOnWriteArrayList


读多写少时性能高;

写多时性能差;



ConcurrentHashMap

.newKeySet()


Set<String> set = ConcurrentHashMap.newKeySet()

基于ConcurrentHashMap


占空间略大。

写多读少时性能高于CopyOnWriteSet

读多写少时性能差于CopyOnWriteSet



Collections.newSetFromMap(

  new ConcurrentHashMap<>())


Set<String> set = Collections.newSetFromMap(new ConcurrentHashMap<>());

基于ConcurrentHashMap


占空间略大。

写多读少时性能高于CopyOnWriteSet

读多写少时性能差于

CopyOnWriteSet



精彩评论(0)

0 0 举报