Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java list 线程安全

作者:﹏丶夜,深了   发布日期:2026-02-20   浏览:51

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

public class ThreadSafeListExample {

    // 使用 Collections.synchronizedList 包装 List 实现线程安全
    public static void synchronizedListExample() {
        List<String> syncList = Collections.synchronizedList(new ArrayList<>());

        // 在多线程环境下使用时,需要手动同步代码块
        synchronized (syncList) {
            for (String item : syncList) {
                System.out.println(item);
            }
        }
    }

    // 使用 CopyOnWriteArrayList 实现线程安全
    public static void copyOnWriteArrayListExample() {
        List<String> cowList = new CopyOnWriteArrayList<>();

        // 可以直接在多线程环境下使用,无需额外同步
        cowList.add("Item 1");
        cowList.add("Item 2");

        for (String item : cowList) {
            System.out.println(item);
        }
    }

    public static void main(String[] args) {
        synchronizedListExample();
        copyOnWriteArrayListExample();
    }
}

解释说明:

  1. Collections.synchronizedList

    • Collections.synchronizedList 是 Java 提供的一个工具方法,它可以将一个普通的 List 包装成线程安全的 List
    • 然而,需要注意的是,虽然这个方法使 List 的基本操作(如 add, remove)是线程安全的,但在进行迭代操作时,仍然需要手动同步代码块,以避免并发修改异常。
  2. CopyOnWriteArrayList

    • CopyOnWriteArrayList 是 Java 并发包 (java.util.concurrent) 中提供的一种线程安全的 List 实现。
    • 它的工作原理是在每次修改(如 add, remove)时创建一个新的底层数组副本,因此读操作不会被写操作阻塞,适合读多写少的场景。
    • 相比于 synchronizedListCopyOnWriteArrayList 不需要额外的同步代码块,使用起来更加方便。

上一篇:java的访问修饰符

下一篇:java string 转jsonarray

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

java读取excel中的图片

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站