首页 > 其他分享 >线程安全集合CopyOnWriteArrayList

线程安全集合CopyOnWriteArrayList

时间:2023-01-29 12:22:05浏览次数:40  
标签:副本 CopyOnWriteArrayList 安全 加锁 线程 集合 多线程

解决多线程的集合有以下几种

1、Vertor(所有方法上加synchronized锁)能保证多线程安全,数据一致,但性能低下一般不用

2、Collections.synchronizedList 方法 返回的List  在方法内部加锁,线程安全,数据一致,性能有提升

3、CopyOnWriteArrayList  内部数组volatile修饰,多线程可见,增删改操作时加锁,copy一份修改副本,再用副本覆盖原属性。线程安全,数据更新有延迟,查询性能高

 

为什么CopyOnWriteArrayList要写时拷贝:

volatile变量修饰的对象数组是引用类型,直接修改数组内部的话,array不会更新

copy副本覆盖对象会更改array变量,进而缓存一致刷新

标签:副本,CopyOnWriteArrayList,安全,加锁,线程,集合,多线程
From: https://www.cnblogs.com/xiaowan2333/p/17072354.html

相关文章

  • 线程()
    线程概念线程是强加入进来的;gdb不支持线程调试;什么是线程学习地址LWP线程号linux内核线程实现原理学习地址线程共享资源线程不要和信号一起用;......
  • 实现单线程多并发的几种方式
    单线程爬虫适用于小规模爬虫项目,如果应对大型项目就得实现多线程多并发,那么单线程如何实现多并发,下面几个示例可以一起看看。1、asyncio2、gevent3、Twisted4、Tornado......
  • 集合面试题
    1.ArrayList和LinkedList的区别?ArrayList查询速度快(不准确),尾部增删快,头部增删慢,随机访问速度快;LinkedList头尾增删速度快,中间不高,性能远比ArrayList差,不适合做......
  • 解决多线程中线程安全的方式一
    /***方式一:同步代码块*synchronized(同步监视器){*//需要被同步的代码**}*说明:1.操作共享数据的代码,即为需要被同步的代码,如对总票数的减减、判......
  • 线程安全的ID生成器
    介绍一个改造升级版本的雪花算法ID生成器,有点是线程安全的,并且永远不可能出现重复ID。目前网上流行的ID生成器,在for循环里,或者多线程的时候会出现重复。thy-common-core......
  • 【Java001】Map集合遍历
    【Java001】Map集合遍历大家好,我们的gzh是朝阳三只大明白,满满全是干货,分享近期的学习知识以及个人总结(包括读研和IT),跪求一波关注,希望和大家一起努力、进步!!方式1使用Map.Entr......
  • springboot前端传后端集合的一些问题
     前端不能加qs来处理集合对象,后端接收需要加@RequestBody  mybatis用foreach遍历集合对象:<updateid="updateBatch"parameterType="news">updatenew......
  • 读Java8函数式编程笔记03_高级集合类和收集器
    1. 方法引用1.1. 一种引用方法的轻量级语法1.1.1. 提供了一种简短的语法1.1.2. 标准语法为Classname::methodName1.2. 凡是使用Lambda表达式的地方,就可以使用1.......
  • java多线程基础小白指南--关键字识别(start,run,sleep,wait,join,yield)
    在学习java多线程基础上,会遇到几个关键字,理解并识别它们是掌握多线程的必备知识,下面,我将通过源码或者程序演示给出我对这几个关键字的理解,如果有不同意见,欢迎在评论区或者......
  • OpenMP 线程同步 Construct 实现原理以及源码分析(上)
    OpenMP线程同步Construct实现原理以及源码分析(上)前言在本篇文章当中主要给大家介绍在OpenMP当中使用的一些同步的construct的实现原理,如master,single,critica......