5. CopyOnWriteArrayList 的适用场景
package com.gf.demo04; import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; /**
* CopyOnWriteArrayList/CopyOnWriteArrySet : “写入并复制”
* 注意 : 添加操作多时,效率低,因为每次添加都会进行复制,开销很大。并发迭代操作多时可以选择。
*/
public class TestCopyOnWriteArrayList { public static void main(String[] args) {
HelloThead ht = new HelloThead(); for (int i = 0; i < 10; i++) {
new Thread(ht).start();
}
} } class HelloThead implements Runnable{ //private static List<String> list = Collections.synchronizedList(new ArrayList<String>());//存在ConcurrentModificationException : 并发修改异常 private static CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>(); static{
list.add("AA");
list.add("BB");
list.add("CC");
} @Override
public void run() {
Iterator<String> it = list.iterator(); while (it.hasNext()) {
System.out.println(it.next());
list.add("AA");
}
} }

关注我的公众号,精彩内容不能错过
5. CopyOnWriteArrayList 的适用场景的更多相关文章
- CopyOnWriteArrayList真的完全线程安全吗
我之前书上看到的说法是:Vector是相对线程安全,CopyOnWriteArrayList是绝对线程安全 这种说法其实有些问题,CopyOnWriteArrayList在某些场景下还是会报错的 Co ...
- 线程安全的CopyOnWriteArrayList介绍
证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的. ReadThread.java import java.util. ...
- 线程安全的CopyOnWriteArrayList
证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的. ReadThread.java import java.util. ...
- 【杂谈】对CopyOnWriteArrayList的认识
前言 之前看<Java并发编程>这本书的时候,有看到这个,只记得"读多写少"."写入时复制".书中没有过多讲述,只是一笔带过(不过现在回头看,发现讲 ...
- 【Java基础】谈谈集合.CopyOnWriteArrayList
目录 实现原理 遍历时不用加锁的原因 CopyOnWriteArrayLis的缺点 使用场景 总结 参考 本篇博客介绍CopyOnWriteArrayList类,读完本博客你将会了解: 什么是COW机 ...
- JDK source 之 ArrayList 需要注意事项
线程安全 ArrayList内部没有实现原子性操作,所以是非线程安全的.如果需要在线程安全的环境下使用List的话,需要使用Vector 或者CopyOnWriteArrayList,具体场景,自行深 ...
- 阿里Java面经大全(整合版)
本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...
- 并发-CopyOnWrite源码分析
CopyOnWrite源码分析 参考: https://blog.csdn.net/linsongbin1/article/details/54581787 http://ifeve.com/java ...
- J.U.C体系进阶(五):juc-collections 集合框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-collections 集合框架 ConcurrentHashMap C ...
随机推荐
- wxPython 的简单框架实例
#coding:utf-8 import wx def load(event): file = open(filename.GetValue(),'r') contents.SetValue(file ...
- docker 2(local registry)
1.获取仓库镜像 ,sudo docker pull registry 2.sudo vim /etc/init/docker.conf 增加--insecure-registry IP:5000 3 ...
- 记录自己的 django管理 开发环境 和 生产环境 配置过程
背景:自己的博客部署到服务器了,可每次上传服务器都要把配置重新该,包括数据库链接也得改,于是就需要管理开发环境和生产环境配置. 1, 这是目录结构,在blog下新建一个settings包,里面新建有c ...
- 【备忘】EntityFramework 6 升级到 EntityFrameworkCore 注意点
正在将一个 .net framework 4.5 的项目升级到 .net core 2.1,其中使用到了 EF6,经历了一些修改: 命名空间的变化基本上可以靠自动提示补充完整,不需要强记. DbQue ...
- maven安装和四大特性
一.安装配置maven 官网下载:http://maven.apache.org/download.html 1:解压后放在一个固定的位置 2:配置环境变量,具体如下 新建系统环境变量:MAVEN_H ...
- 神经网络(BP)算法Python实现及简单应用
首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 def tanh(x): return np.tanh(x) # tanh函数的导数 def t ...
- 传参导出Excel表乱码问题解决方法
业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...
- MQTT入门篇
物联网(Internet of Things,IoT)最近曝光率越来越高.虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请 ...
- GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
通过一个简单的例子介绍一下gcc的__attribute__ ((constructor))属性的作用.gcc允许为函数设置__attribute__ ((constructor))和__attrib ...
- 屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!
前阵子,Oracle 发布了一个黑科技 "GraalVM",号称是一个全新的通用全栈虚拟机,并具有高性能.跨语言交互等逆天特性,真有这么神奇? GraalVM 简介 GraalVM ...