java并发之CopyOnWriteArraySet

CopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,持有CopyOnWriteArrayList的内部对象,它的迭代器也是CopyOnWriteArrayList的迭代器,add操作通过addAllAbsent或者addIfAbsent去重。

例子

package javalearn.javabase.concurrent;import lombok.extern.slf4j.Slf4j;import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;@Slf4j
public class CopyOnWriteArraySetTest {private static CopyOnWriteArraySet<String> set = new CopyOnWriteArraySet<>();private static int capcity = 5;//private static HashSet<String> set =new HashSet<>();public static void main(String[] args) {CopyOnWriteArraySetTest.InnerThread t1 = new InnerThread();CopyOnWriteArraySetTest.InnerThread t2 = new InnerThread();t1.start();t2.start();try {Thread.sleep(1000);log.info("collection:{} ",set.toString());} catch (InterruptedException e) {e.printStackTrace();}}static class InnerThread extends Thread {@Overridepublic void run() {for (int i = 0; i < capcity; i++) {set.add(String.valueOf(i));set.add(String.valueOf(i));iterator(set);}}}public static void iterator(Set set) {Iterator iterator = set.iterator();while (iterator.hasNext()) {iterator.next();}}
}

结果

21:10:09.967 [main] INFO javalearn.javabase.concurrent.CopyOnWriteArraySetTest - collection:[0, 1, 2, 3, 4] 

转载于:https://www.cnblogs.com/JuncaiF/p/11373963.html

java并发之CopyOnWriteArraySet相关推荐

  1. 面试:你说你精通Java并发,给我讲讲Java并发之J.U.C

    转载自 面试:你说你精通Java并发,给我讲讲Java并发之J.U.C J.U.C J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心. ...

  2. JAVA并发之多线程基础(2)

    除了我们经常用的synchronized关键字(结合Object的wait()和notify()使用)之外,还有对应的上篇文章讲到的方法JAVA并发之多线程基础(1)之外,我们日常中使用到最多的也就是 ...

  3. JAVA并发之多线程基础(5)

    上面介绍了并发编程中的栅栏等JAVA并发之多线程基础(4) .通过唯一的一个终点线来帮助确定线程是多晚开始执行下一次操作. LockSupport 提供了一个比较底层的线程挂起操作.有点类似于susp ...

  4. 我的Java开发之路

    最近有一位小伙伴通过公众号给我留言, "我参加工作没多久,看着圈里的技术大牛,特别羡慕,也渴望成为技术大牛,想让您分享一下从小白到大牛是怎样练成的,我该如何提高自己" 首先,谢谢这 ...

  5. java并发之SynchronousQueue实现原理

    前言 SynchronousQueue是一个比较特别的队列,由于在线程池方面有所应用,为了更好的理解线程池的实现原理,笔者花了些时间学习了一下该队列源码(JDK1.8),此队列源码中充斥着大量的CAS ...

  6. 你真的弄明白了吗?Java并发之AQS详解

    你真的弄明白了吗?Java并发之AQS详解 带着问题阅读 1.什么是AQS,它有什么作用,核心思想是什么 2.AQS中的独占锁和共享锁原理是什么,AQS提供的锁机制是公平锁还是非公平锁 3.AQS在J ...

  7. 如何通过示例在Java中使用CopyOnWriteArraySet

    CopyOnWriteArraySet是CopyOnWriteArrayList类的弟弟. 这些是专用集合类,这些类是在JDK 1.5上添加的,以及它们最流行的表亲ConcurrentHashMap ...

  8. java并发之CopyOnWirteArrayList

    java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volat ...

  9. java并发之Future与Callable使用

    java并发之Future与Callable使用 这篇文章需要大家知道线程.线程池的知识,尤其是线程池. 有的时候我们要获取线程的执行结果,这个时候就需要用到Callable.Future.Futur ...

最新文章

  1. 在deepin系统中制作桌面快捷方式
  2. UA MATH636 信息论7 高斯信道简介
  3. 谓词NSPredicate的使用
  4. java 发送 接受 xml请求
  5. 01 | 基础架构:一条SQL查询语句是如何执行的?笔记(转)
  6. 终端 ssh 上传文件_记一次将文件添加到github
  7. java 嵌入式 类型工具库_你常用的Java工具库都有哪些?
  8. Makefile系列之五 :函数
  9. 最新!2020中国高校毕业生薪资排行出炉!好过双一流的高校原来这么多
  10. 常用的几种视频格式(最详细的解释)
  11. HTML动画能在手机播放吗,如何使动画在手机中屏幕适配
  12. 计算机网络 带宽_什么是带宽(计算机网络)?
  13. java8的Effectively final
  14. 关于JDK8安装遇到1335问题
  15. 梦幻西游网络诊断找不到服务器,《梦幻西游》电脑版出现网络故障 受影响者可寻找恢复使者进行恢复...
  16. C语言电子时钟程序设计,单片机C语言电子时钟加日历显示编程
  17. NOI2018网络同步赛游记
  18. 如何使用Metasploit对安卓手机进行控制
  19. SpringBoot集成 Windows2012 AD 认证服务
  20. 粪菌移植到底谁在起作用?

热门文章

  1. linux getline函数用法,get()与getline()
  2. MySql 应用语句
  3. 框架less和sass
  4. 远程桌面保存密码(凭据)的备份导出
  5. DOM操作 append prependTo after before
  6. 习题:输出九九乘法表
  7. Unity打包APK细节(翻译自官网)
  8. 镶套iframe 鼠标滚动无效解决办法
  9. mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...
  10. java+long.builder_java.lang.StringBuilder.append(long lng)方法实例