java并发之CopyOnWriteArraySet
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相关推荐
- 面试:你说你精通Java并发,给我讲讲Java并发之J.U.C
转载自 面试:你说你精通Java并发,给我讲讲Java并发之J.U.C J.U.C J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心. ...
- JAVA并发之多线程基础(2)
除了我们经常用的synchronized关键字(结合Object的wait()和notify()使用)之外,还有对应的上篇文章讲到的方法JAVA并发之多线程基础(1)之外,我们日常中使用到最多的也就是 ...
- JAVA并发之多线程基础(5)
上面介绍了并发编程中的栅栏等JAVA并发之多线程基础(4) .通过唯一的一个终点线来帮助确定线程是多晚开始执行下一次操作. LockSupport 提供了一个比较底层的线程挂起操作.有点类似于susp ...
- 我的Java开发之路
最近有一位小伙伴通过公众号给我留言, "我参加工作没多久,看着圈里的技术大牛,特别羡慕,也渴望成为技术大牛,想让您分享一下从小白到大牛是怎样练成的,我该如何提高自己" 首先,谢谢这 ...
- java并发之SynchronousQueue实现原理
前言 SynchronousQueue是一个比较特别的队列,由于在线程池方面有所应用,为了更好的理解线程池的实现原理,笔者花了些时间学习了一下该队列源码(JDK1.8),此队列源码中充斥着大量的CAS ...
- 你真的弄明白了吗?Java并发之AQS详解
你真的弄明白了吗?Java并发之AQS详解 带着问题阅读 1.什么是AQS,它有什么作用,核心思想是什么 2.AQS中的独占锁和共享锁原理是什么,AQS提供的锁机制是公平锁还是非公平锁 3.AQS在J ...
- 如何通过示例在Java中使用CopyOnWriteArraySet
CopyOnWriteArraySet是CopyOnWriteArrayList类的弟弟. 这些是专用集合类,这些类是在JDK 1.5上添加的,以及它们最流行的表亲ConcurrentHashMap ...
- java并发之CopyOnWirteArrayList
java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volat ...
- java并发之Future与Callable使用
java并发之Future与Callable使用 这篇文章需要大家知道线程.线程池的知识,尤其是线程池. 有的时候我们要获取线程的执行结果,这个时候就需要用到Callable.Future.Futur ...
最新文章
- 在deepin系统中制作桌面快捷方式
- UA MATH636 信息论7 高斯信道简介
- 谓词NSPredicate的使用
- java 发送 接受 xml请求
- 01 | 基础架构:一条SQL查询语句是如何执行的?笔记(转)
- 终端 ssh 上传文件_记一次将文件添加到github
- java 嵌入式 类型工具库_你常用的Java工具库都有哪些?
- Makefile系列之五 :函数
- 最新!2020中国高校毕业生薪资排行出炉!好过双一流的高校原来这么多
- 常用的几种视频格式(最详细的解释)
- HTML动画能在手机播放吗,如何使动画在手机中屏幕适配
- 计算机网络 带宽_什么是带宽(计算机网络)?
- java8的Effectively final
- 关于JDK8安装遇到1335问题
- 梦幻西游网络诊断找不到服务器,《梦幻西游》电脑版出现网络故障 受影响者可寻找恢复使者进行恢复...
- C语言电子时钟程序设计,单片机C语言电子时钟加日历显示编程
- NOI2018网络同步赛游记
- 如何使用Metasploit对安卓手机进行控制
- SpringBoot集成 Windows2012 AD 认证服务
- 粪菌移植到底谁在起作用?
热门文章
- linux getline函数用法,get()与getline()
- MySql 应用语句
- 框架less和sass
- 远程桌面保存密码(凭据)的备份导出
- DOM操作 append prependTo after before
- 习题:输出九九乘法表
- Unity打包APK细节(翻译自官网)
- 镶套iframe 鼠标滚动无效解决办法
- mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...
- java+long.builder_java.lang.StringBuilder.append(long lng)方法实例