首页 > 其他分享 >集合线程安全问题:第一章:集合类不安全之并发修改异常

集合线程安全问题:第一章:集合类不安全之并发修改异常

时间:2022-09-05 16:02:49浏览次数:108  
标签:并发 arrayList util 安全 线程 集合 new ArrayList

直接上ArrayList线程不安全代码:

package com.javaliao.backstage;
 
import java.util.ArrayList;
import java.util.UUID;
 
public class Demo {
    public static void main(String[] args) {
        List arrayList = new ArrayList<String>();
        for (int i = 0; i < 30; i++) {
            new Thread(()->{
                arrayList.add(UUID.randomUUID().toString().substring(0,8));
                System.out.println(arrayList);
            },String.valueOf(i)).start();
        }
    }
}

控制台直接报错:
在这里插入图片描述

只要你干过电商项目的基本上都见过,java.util.ConcurrentModificationException并发修改异常

错误分析:

故障现象:java.util.ConcurrentModificationException并发修改异常
导致原因:并发争取修改导致,一个线程正在写,一个线程过来争抢,导致线程写的过程被其他线程打断,导致数据不一致。
解决方案

      第一种:使用List arrayList = new Vector<>();它的底层使用了synchronized加锁,但是并发下降

      第二种:使用List arrayList = Collections.synchronizedList(new ArrayList<String>());使用工具类,线程同步

      第三种:使用List arrayList = new CopyOnWriteArrayList<>();写时复制

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120322634

标签:并发,arrayList,util,安全,线程,集合,new,ArrayList
From: https://www.cnblogs.com/wangchuanxinshi/p/16658468.html

相关文章

  • TPS—响应时间—压力线程—资源使用率的关联关系
    TPS—响应时间—压力线程—资源使用率的关联关系TPS和响应时间和压力线程之间的关系TPS关系,仅供理解关系,并不能作为计算,因为有其他因素干扰,比如线程数增加,有等待时间的......
  • JAVA进阶--不可变集合、Stream流、异常--2022年9月4日
    第一节 不可变集合1、不可变集合的特点定义完成后不可以修改,或者添加、删除2、如何创建不可变集合List、Set、Map接口中,都存在of方法可以创......
  • java复习随笔(八)——线程(二)——生产者和消费者
    生产者消费者生产者消费者模式概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻所谓生产者消费者问题......
  • 超级科技携手华为,共筑中小企业云上安全基石
     8月28日,由华为联合3万余家生态伙伴共同发起的首届828B2B企业节正式启动,超级科技作为华为COC合作伙伴,与华为云MSP服务展开全面合作,助力中小企业破解数字化转型中的痛......
  • 多进程和多线程结合跑满cpu
    importjsonimportmultiprocessingimportthreadingimporttimeimportrandomimportrequestsimporturllib3lock=threading.RLock()urllib3.disable_warning......
  • Dubbo 线程池占满可能原因分析
    可能原因:(1)dubbo中有httpClient调用。由于http工具默认仅支持5个并发,且有线程池队列,当请求量超过5个的时候,多余的请求会在队列中堆积。前一批http请求结束之后其他......
  • 团队冲突第 3 部分:处理不安全的情况和人力资源
    团队冲突第3部分:处理不安全的情况和人力资源这是团队冲突系列的下一篇文章。前两个帖子更多地针对经理、HRBP和领导者,您可以在这里找到它们:第1部分第2部分这篇文......
  • java随笔(七)——多线程(比较详细)
    线程线程是进程中单个的顺序控制流,是一条执行路径单线程:一个进程如果只有一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序多线程的实......
  • Java多线程相关概念
    Java多线程相关概念1.并发是在同一实体上的多个事件,是在同一台处理器上“同时”处理多个任务,同一时刻,其实是只有一个事件在发生2.并行是在不同实体上的多个事件,是在......
  • Linux 服务器安全(基本)
    Linux服务器安全     版本标识V1编制单位李斌编制日期2020年7月 第一节1、红帽linux的好处2、linux企业版发行的类型3......