040_并发下集合类不安全
目录
并发下 ArrayList 不安全
:::info
并发修改异常 java.util.ConcurrentModificationException
:::
:::info
并发修改异常 java.util.ConcurrentModificationException
原因:ArrayList的add()方法是线程不安全的
:::
解决方案一:Vector(不推荐使用)
:::info
分析:Vector的add()方法是同步方法,线程安全
:::
解决方案二:Collections.synchronizedList()
解决方案三:CopyOnWriteArrayList(推荐使用)
:::info
分析:CopyOnWriteArrayList的add()方法中使用了lock锁,线程安全
CopyOnWrite 写入时复制,简写为COW,计算机程序设计领域的一种优化策略
多线程情况下使用list,读取时,是固定的,写入时,存在覆盖操作
使用CopyOnWriteArrayList,会避免覆盖操作的情况,因为:代码块使用lock锁加锁,先创建拷贝新数组,再变量指向新数组,中间时间,如果有线程读取list,读取的还是原来的list
:::
并发下 HashSet 不安全
:::info
并发修改异常 java.util.ConcurrentModificationException
:::
解决方案一:Collections.synchronizedSet()
解决方案二:CopyOnWriteArraySet(推荐使用)
并发下 HashMap 不安全
:::info
并发修改异常 java.util.ConcurrentModificationException
:::
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统