java中有哪些线程安全的数据类型呢?

欢喜 Java经验 发布时间:2025-06-06 10:02:04 阅读数:14857 1
下文笔者讲述java中线程安全的数据类型简介说明,如下所示

线程安全集合类(`java.util.concurrent`包)

类型 描述
`ConcurrentHashMap<K,V>` 线程安全的哈希表,
适用于高并发场景
`CopyOnWriteArraylist<E>` 写时复制的线程安全列表,
适合读多写少的场景
`CopyOnWriteArraySet<E>` 基于 `CopyOnWriteArrayList`
实现的线程安全 Set
`ConcurrentLinkedQueue<E>` 非阻塞、
线程安全的链表队列
`ConcurrentLinkedDeque<E>` 双端队列,
线程安全
`LinkedBlockingQueue<E>` 基于链表实现的
可选有界阻塞队列
`ArrayBlockingQueue<E>` 基于数组实现的
有界阻塞队列
`PriorityBlockingQueue<E>` 支持优先级排序的无界阻塞队列
`SynchronousQueue<E>` 不存储元素的阻塞队列,
每个插入操作必须等待取出操作
`DelayQueue<E extends Delayed>` 元素只有在其延迟过期后
才能被取出的队列

原子变量类(`java.util.concurrent.atomic`包)

这些类基于 
  CAS(Compare and Swap)技术实现
  保证单个变量原子操作
类型 描述
`AtomicInteger` 线程安全的整型变量
`AtomicLong` 线程安全的长整型变量
`AtomicBoolean` 线程安全的布尔值
`AtomicReference<T>` 线程安全的引用类型变量
`AtomicIntegerArray`, `AtomicLongArray` 等 线程安全的数组元素操作

同步工具类(`java.util.concurrent`)

以下工具类
   常用于控制多个线程之间协作
允许一个或多个线程等待其他线程完成操作 多个线程互相等待,
达到一个屏障点后再继续执行 控制同时访问的线程数量(资源池、限流等) 两个线程之间交换数据的同步点
类型
`CountDownLatch`
`CyclicBarrier`
`Semaphore`
`Exchanger<V>`

旧版线程安全类(不推荐新项目使用)

类型 描述
`Vector<E>` 线程安全的动态数组(方法都加synchronized)
`Hashtable<K,V>` 线程安全的 Map(方法都加synchronized)
`Collections.synchronizedList(List<T>)` 将普通List转为线程安全版本
`Collections.synchronizedMap(Map<K,V>)` 将普通Map转为线程安全版本
1.使用`ConcurrentHashMap`
	ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
	map.put("a", 1);
	map.computeIfAbsent("b", k -> 2);
 
2.使用`CopyOnWriteArrayList`
  CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
   list.add("item1");
   list.forEach(System.out::println);
 
3.使用`AtomicInteger`
  AtomicInteger counter = new AtomicInteger(0);
  counter.incrementAndGet(); // 原子自增

线程适用场景

场景 推荐类型
高并发 Key-Value 操作 `ConcurrentHashMap`
读多写少的列表 `CopyOnWriteArrayList`
原子变量操作 `AtomicInteger`, `AtomicReference`
生产者-消费者模型 `BlockingQueue`系列
多线程协作控制 `CountDownLatch`, `CyclicBarrier`, `Semaphore`
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202506/17491766158488.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者