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

java 线程安全的list

作者:傲者自孤   发布日期:2025-05-19   浏览:35

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

public class ThreadSafeListExample {

    // 使用 Collections.synchronizedList 方法
    public static List<String> synchronizedListExample() {
        List<String> list = new Vector<>();
        List<String> synchronizedList = Collections.synchronizedList(list);
        return synchronizedList;
    }

    // 使用 CopyOnWriteArrayList
    public static List<String> copyOnWriteArrayListExample() {
        List<String> list = new CopyOnWriteArrayList<>();
        return list;
    }

    public static void main(String[] args) {
        // 示例:使用同步列表
        List<String> syncList = synchronizedListExample();
        synchronized (syncList) {
            syncList.add("Element 1");
            syncList.add("Element 2");
        }

        // 示例:使用 CopyOnWriteArrayList
        List<String> cowList = copyOnWriteArrayListExample();
        cowList.add("Element A");
        cowList.add("Element B");

        System.out.println("Synchronized List: " + syncList);
        System.out.println("CopyOnWriteArrayList: " + cowList);
    }
}

解释说明

  1. Collections.synchronizedList:

    • Collections.synchronizedList 方法返回一个线程安全的列表,该列表是通过同步包装器实现的。
    • 在多线程环境中,必须在外部手动同步对列表的操作(例如遍历),以确保线程安全。
  2. CopyOnWriteArrayList:

    • CopyOnWriteArrayList 是 Java 并发包 (java.util.concurrent) 提供的一个线程安全的列表实现。
    • 它的工作原理是在每次修改时创建一个新的副本,因此读操作不需要加锁,写操作则需要加锁。
    • 适用于读多写少的场景,因为每次写操作都会创建新的副本,可能会带来较大的开销。
  3. Vector:

    • Vector 本身是一个线程安全的类,但它的性能较差,因为它对每个方法都进行了同步。通常推荐使用 CopyOnWriteArrayListCollections.synchronizedList 来替代 Vector

以上代码展示了如何创建和使用这两种线程安全的列表,并提供了一个简单的示例来演示它们的用法。

上一篇:java新特性

下一篇:java localdate 转date

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

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

Laravel 中文站