`

CopyOnWriteArraySet 使用心得

 
阅读更多

Set中实现元素互异的各种方法差异很大,大致可以分为三种:使用equals,使用hashCode,使用compareTo。但是我还没有发现采用“判断地址空间是否相同”来判断元素是否相同的类,当然我们可以用现有的三种方法来实现“判断地址空间是否相同”。
  
   综上所述,我们可以总结出使用Set的三种不同的情形:(以下假设元素类为Element)
   A、如果想使用Element的equals方法来判断元素是否相同,那么可以使用CopyOnWriteArraySet来构造类的实体。
   B、如果Element实现了Comparable接口,而且想使用compareTo方法来判断元素是否相同,那么可以使用TreeSet来构造类的实体。
   C、如果想使用判断hashCode是否相同的方法来判断元素是否相同,那么可以使用HashSet来构造类的实体。

分享到:
评论

相关推荐

    java集合-CopyOnWriteArraySet的使用

    CopyOnWriteArraySet 是Java中的一个线程安全的集合类,它实现了 Set 接口并使用了"写时复制"的机制。 下面是关于 CopyOnWriteArraySet 的一些重要信息: 线程安全性:CopyOnWriteArraySet 是线程安全的,可以在多...

    Java concurrency集合之CopyOnWriteArraySet_动力节点Java学院整理

    在选择使用CopyOnWriteArraySet时,需要注意以下几点: - 由于CopyOnWriteArraySet的线程安全性,它适用于多线程环境,特别是读多写少的场景。 - 遍历速度快,因为迭代器基于集合的固定视图,不会因其他线程的修改而...

    第四章 CopyOnWriteArraySet源码解析1

    CopyOnWriteArraySet的构造函数很简单,它内部使用了一个CopyOnWriteArrayList实例作为底层数据结构。创建一个新的CopyOnWriteArraySet实例时,会初始化一个空的CopyOnWriteArrayList。例如: ```java Set...

    CopyOnWriteArrayListCopyOnWri

    CopyOnWriteArraySet内部同样使用了CopyOnWriteArrayList作为底层数据结构,因此它也具备“写时复制”的特性。在CopyOnWriteArraySet中,所有元素都必须是唯一的,添加元素时会先检查元素是否已存在,避免重复。由于...

    java集合使用实例

    如果多个线程同时访问这些集合,可能需要使用ConcurrentHashMap、CopyOnWriteArraySet等线程安全的集合类。同时,了解如何有效地使用这些集合进行数据操作,如批量添加、删除、查找,以及集合转换,是提升程序性能的...

    并发容器的原理,7大并发容器详解、及使用场景

    4. ConcurrentLinkedQueue 是一个基于链接节点的无界并发队列,它使用了链表结构实现 FIFO(先进先出),并且不使用锁,而是依赖于 CAS 操作。 5. LinkedBlockingQueue、ArrayBlockingQueue 和 ...

    多线程中使用Java集合类.doc

    2. 使用`java.util.concurrent`包下的线程安全集合类:如CopyOnWriteArrayList和CopyOnWriteArraySet。这些类在内部实现上保证了线程安全,它们通过复制原集合创建新集合来避免修改时的并发问题。这种方式适用于迭代...

    9、并发容器(Map、List、Set)实战及其原理.pdf

    - **IP黑名单管理**:例如,在网络应用中,需要维护一个IP黑名单列表,每当有新的非法IP加入时,都可以使用`CopyOnWriteArraySet`来高效地添加新元素并保持线程安全。 ### 3. ConcurrentHashMap #### 3.1 原理概述...

    JUC包含线程,线程池,CAS,volatile等底层原理,以及相关问题的解决方式以及相关工具类的使用

    当线程尝试进入同步代码块时,会执行monitorenter指令尝试获取锁,执行完后使用monitorexit指令释放锁。如果有异常导致提前退出,JVM会确保执行额外的monitorexit,以防止锁未被正确释放,从而避免死锁。 **线程...

    SpringBoot如何使用WebSocket详解含示例代码(值得珍藏)

    // 使用CopyOnWriteArraySet来存储连接的客户端,确保线程安全 private static final Set<Session> clients = new CopyOnWriteArraySet(); private static final AtomicInteger counter = new AtomicInteger(); ...

    JAVA并发容器代码随读1

    - CopyOnWriteArraySet 和 CopyOnWriteArrayList 类似,它们使用“写时复制”策略,当需要修改集合时,会创建一个新的底层数组并复制原数组的内容,这样在并发读取时不会被打断,提高了并发性能。 总结来说,Java...

    Java容器.xmind

    使用addIfAbsent()添加元素时,会遍历数组,如果存在元素,则抛弃副本 ConcurrentHashMap 初始容量默认为16段(segment),使用分段锁设计 ConcurrentLinkedQueue 高并发下性能最好的队列 无锁,采用CAS比较算法,核心...

    对Java中Set的深入研究.pdf

    Set接口继承自Collection接口,并提供了多种实现类,如HashSet、LinkedHashSet、TreeSet和CopyOnWriteArraySet等。这些实现类各自有不同的特性和使用场景。 1. 实现类详解: - `CopyOnWriteArraySet`:这个类基于`...

    Java并发编程实践-03章-使用JDK并发包构建程序1

    **3.3.3 CopyOnWriteArrayList和CopyOnWriteArraySet** 这两个类采用了"写时复制"策略,即在修改集合时,会创建一个新的底层数组,然后将修改应用到新数组上,最后替换旧数组。这种方式在并发读取频繁而修改较少的...

    Java常见的线程安全的类.docx

    CopyOnWriteArrayList内部使用ReentrantLock,而CopyOnWriteArraySet依赖于CopyOnWriteArrayList的线程安全性。 5. Concurrentxxx类:ConcurrentHashMap是最常用的并发集合,它通过分段锁技术实现线程安全,允许多...

    提升Java的锁性能Java开发Java经验技巧共5页.p

    - **CopyOnWriteArrayList/CopyOnWriteArraySet**:这些容器在读多写少的场景下表现出色,写操作时会复制整个容器,避免了并发修改异常。 3. **锁优化策略** - **减小锁的粒度**:将大对象拆分成小对象,每个对象...

    java常用锁使用demo工程

    - **CopyOnWriteArrayList/CopyOnWriteArraySet**:写时复制的集合,读操作无锁,写操作创建副本,适用于读多写少的场景。 5. 线程池(ExecutorService): - Java的`java.util.concurrent`包提供了...

Global site tag (gtag.js) - Google Analytics