首页 > 其他分享 >040_并发下集合类不安全

040_并发下集合类不安全

时间:2022-11-15 21:14:52浏览次数:50  
标签:info 安全 解决方案 并发 Collections ConcurrentModificationException 集合 040

目录

并发下 ArrayList 不安全

:::info
并发修改异常 java.util.ConcurrentModificationException
:::
image.png
image.png
:::info
并发修改异常 java.util.ConcurrentModificationException
原因:ArrayList的add()方法是线程不安全的
:::
image.png
image.png

解决方案一:Vector(不推荐使用)

image.png
image.png
:::info
分析:Vector的add()方法是同步方法,线程安全
:::
image.png

解决方案二:Collections.synchronizedList()

image.png
image.png

解决方案三:CopyOnWriteArrayList(推荐使用)

image.png
image.png
image.png
:::info
分析:CopyOnWriteArrayList的add()方法中使用了lock锁,线程安全
CopyOnWrite 写入时复制,简写为COW,计算机程序设计领域的一种优化策略
多线程情况下使用list,读取时,是固定的,写入时,存在覆盖操作
使用CopyOnWriteArrayList,会避免覆盖操作的情况,因为:代码块使用lock锁加锁,先创建拷贝新数组,再变量指向新数组,中间时间,如果有线程读取list,读取的还是原来的list
:::
image.png

并发下 HashSet 不安全

:::info
并发修改异常 java.util.ConcurrentModificationException
:::
image.png
image.png

解决方案一:Collections.synchronizedSet()

image.png

image.png

解决方案二:CopyOnWriteArraySet(推荐使用)

image.png
image.png

并发下 HashMap 不安全

:::info
并发修改异常 java.util.ConcurrentModificationException
:::
image.png
image.png

解决方案一:Collections.synchronizedMap()

解决方案二:ConcurrentHashMap

image.png
image.png
image.png

标签:info,安全,解决方案,并发,Collections,ConcurrentModificationException,集合,040
From: https://www.cnblogs.com/wl3pb/p/16893925.html

相关文章

  • 【scala】scala 集合中求交集,并集,差集
    scala集合有:SetArray/ArrayBuffer/List/ListBuffer做集合操作时一般先需要去重,对于非Set来说,用关键字distinct去重scala>List(1,2,2,3).distinct1.求交集Set(1......
  • 离散数学左孝凌版本-集合论一
    集合论集合与关系集合的概念略集合表示法略集合相等定义基本概念子集空集全集幂集集合的运算序偶笛卡尔积总结关系及其表......
  • 接口性能指标-QPS-TPS-并发量
    转载:https://www.cnblogs.com/liuqingzheng/p/16207660.html1QPSQueriesPerSecond,每秒查询率,一台服务器每秒能够响应的查询次数。是对一个特定的查询服务器在规定......
  • 根据获取集合指定位置以及特定数量的元素做虚拟分页
    后端java代码@ApiOperation(value="待办任务",notes="待办任务")@GetMapping("/todoTask/list")@ApiImplicitParams({@ApiImplicitParam(n......
  • 并发上传md5值不匹配解决方法
    因为同步分片上传对于大文件非常耗时,如果并发上传定会出现乱序,而某些厂商的云盘没有对分片并发上传做相应处理,导致上传后的文件与原文件md5值不匹配。以下给出我对此问题......
  • 网络并发1
    今日内容总结软件开发架构规定了程序的请求逻辑、功能模块1.C/S架构 Client:客户端 Server:服务端"""我们使用计算机下载下来的一个个app本质是各大互联网公司的客......
  • websocket 进阶!netty框架实现websocket达到高并发
    引言:在前面两篇文章中,我们对原生websocket进行了了解,且用demo来简单的讲解了其用法。但是在实际项目中,那样的用法是不可取的,理由是tomcat对高并发的支持不怎么好,特别是tomca......
  • 异步pyppeteer:并发运行多个浏览器并收集结果
    网上代码一大抄,居然网上讲pyppeteer异步的一大推,但运行起来都是await,并没有讲如何同时并发运行十几二个pyppeteer页面,那有个卵用呀,还不如开个多进程呢。话不多说,上代码。......
  • javaSE基础-集合
    集合集合中类的关系图数组与集合1、数组与集合数据存储简述集合、数组都是对多个数据进行存储操作的结构,简称java容器说明:此时的存储,主要指的是内存层面的存储,不涉及......
  • 如何理解Java中眼花缭乱的各种并发锁?
    在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。今天,我给大家一次性把Java并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、自旋锁、偏向......