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

java 线程安全的set

作者:自然ㄣ之光   发布日期:2025-11-28   浏览:46

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class ThreadSafeSetExample {
    public static void main(String[] args) {
        // 使用 Collections.synchronizedSet 方法创建线程安全的 Set
        Set<String> threadSafeSet = Collections.synchronizedSet(new HashSet<>());

        // 添加元素到 Set
        threadSafeSet.add("Element1");
        threadSafeSet.add("Element2");
        threadSafeSet.add("Element3");

        // 遍历 Set 时需要进行同步,以确保线程安全
        synchronized (threadSafeSet) {
            for (String element : threadSafeSet) {
                System.out.println(element);
            }
        }

        // 或者使用并发包中的 CopyOnWriteArraySet
        // 这种方式在读多写少的场景下性能较好
        Set<String> copyOnWriteSet = new java.util.concurrent.CopyOnWriteArraySet<>();
        copyOnWriteSet.add("Element1");
        copyOnWriteSet.add("Element2");
        copyOnWriteSet.add("Element3");

        // 可以直接遍历,因为 CopyOnWriteArraySet 是线程安全的
        for (String element : copyOnWriteSet) {
            System.out.println(element);
        }
    }
}

解释说明:

  1. Collections.synchronizedSet:这是将一个普通的 Set 包装成线程安全的 Set 的一种方法。它通过内部加锁机制保证了线程安全性。
  2. 遍历时的同步:当使用 Collections.synchronizedSet 创建的集合时,在遍历时仍然需要进行同步,以确保线程安全。
  3. CopyOnWriteArraySet:这是 java.util.concurrent 包中提供的一个线程安全的 Set 实现。它的特点是每次写操作(如添加、删除)都会创建一个新的底层数组副本,因此适用于读多写少的场景。

上一篇:java object转date

下一篇:java fork join

大家都在看

java判断是windows还是linux

java连接数据库的代码

java djl

ubuntu 卸载java

es java api

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

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

Laravel 中文站