当前位置: 首页 > news >正文

线程安全的集合类

文章目录

    • 多线程环境使⽤`ArrayList`
      • 线程不安全
      • 线程安全
        • 可以使用 `ReentrantLock` 或 `synchronized`来保护 `ArrayList` 的访问。
        • 使用同步包装器
        • 使用 `CopyOnWriteArrayList`
        • **“写时复制”机制**
    • 多线程环境使⽤队列
    • 多线程环境使⽤哈希表
      • Hashtable
      • ConcurrentHashMap
      • HashMap、HashTable、ConcurrentHashMap的区别

VectorStackHashTable 是线程安全的,但不建议⽤,其他的集合类不是线程安全的。

多线程环境使⽤ArrayList

在单线程环境下不涉及线程安全问题,但是,在多线程环境中直接使用 ArrayList 是不安全的。

线程不安全

如果多个线程同时对同一个 ArrayList 进行读写操作(尤其是写操作),可能会导致数据不一致或抛出异常(如 ConcurrentModificationException)。

package com.zxy.lesson12;

import java.util.ArrayList;
import java.util.List;

public class Demo12_03 {
   
    public static void main(String[] args) {
   
        // 先定义一个集合对象(线程不安全)
        List<Integer> list = new ArrayList<>();

        // 多个线程同时对这个集合进行读写操作--线程不安全
        for (int i = 0; i < 10; i++) {
   
            int j = i + 1;
            Thread t = new Thread(() -> {
   
                // 写
                list.add(j);
                // 读
                System.out.println(list);
            });
            // 启动线程
            t.start();
        }
    }
}

线程安全

可以使用 ReentrantLocksynchronized来保护 ArrayList 的访问。
使用同步包装器

可以通过 Collections.synchronizedList() 方法将 ArrayList 包装为线程安全的集合。

package com.zxy.lesson12;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Demo12_04 {
   
    public static void main(String[] args) {
   
        // 创建一个普通集合对象
        List<Integer> arrayList =

相关文章:

  • 每日十题八股-补充材料-2025年2月15日
  • Bob the Canadian
  • 安装Homebrew时提示Warning: /opt/homebrew/bin is not in your PATH.
  • UNET改进62:添加HFERB模块|提取高频信息的高频增强残差块
  • 基于Deepseek自动生成单元测试的Idea插件
  • 5分钟掌握LM Studio本地部署DeepSeek R1
  • Rust包管理
  • 计算机软件毕业设计选题指南:热门方向与创新思路
  • 【java】方法的值传递
  • 数据守护者:备份文件的重要性及自动化备份实践
  • 《深度Q网络优化:突破高维连续状态空间的束缚》
  • 代码随想录算法营Day39 | 416. 分割等和子集
  • 小火车理论
  • 高血压危险因素分析(项目分享)
  • 计算机基础-内存分配
  • Swift - 引用计数
  • 数电基础总结
  • STM32的HAL库开发---内存保护(MPU)
  • 第二节 字符串、列表
  • 完全数和质数算法详解
  • 河南一女子被医院强制带走治疗,官方通报:当值医生停职
  • 中国纪检监察刊文:力戒形式主义官僚主义关键是要坚持实事求是
  • 受关税政策影响,沃尔玛将上调部分商品在美售价
  • 一船明月过沧州:为何这座城敢称“文武双全”?
  • 张汝伦:康德和种族主义
  • 商务部就开展加强战略矿产出口全链条管控工作应询答记者问