Java并发 共 17 篇文章

Java DoubleAdder 为什么在高速并发下比 AtomicLong 吞吐量更高
2026-05-22 18:23:09
Java DoubleAdder 为什么在高速并发下比 AtomicLong 吞吐量更高 在处理高并发计数场景时,选择正确的工具至关重要。AtomicLong 是 JDK 1.5 引入的经典并发计数器,而 DoubleAdder(及其兄弟 LongAdder)在 JDK 1.8 中被引入,旨在解决前
Java并发 DoubleAdder AtomicLong
15 0
Java ForkJoinPool 工作窃取算法在任务拆分中的负载均衡逻辑
2026-05-22 12:22:25
Java ForkJoinPool 工作窃取算法在任务拆分中的负载均衡逻辑 ForkJoinPool 是 Java 并发编程中一个强大的工具,它通过“分而治之”的策略高效处理可递归分解的任务。其核心秘密在于 工作窃取(WorkStealing) 算法,该算法是其在任务动态拆分过程中实现 负载均衡 的
Java并发 ForkJoinPool 工作窃取算法
10 0
Java虚拟线程Virtual Thread与平台线程的调度差异
2026-05-17 23:35:38
Java虚拟线程Virtual Thread与平台线程的调度差异 在 Java 21 正式发布之前,Java 的并发模型一直依赖于操作系统内核线程。这种传统的线程模型在处理高并发请求时,往往受限于内存和上下文切换的开销。为了从根本上解决这个问题,Java 引入了虚拟线程。理解这两者在调度机制上的差异
虚拟线程 平台线程 线程调度
30 0
Java 偏向锁到轻量级锁的升级条件与撤销开销
2026-05-17 15:22:40
Java 偏向锁到轻量级锁的升级条件与撤销开销 Java 对象头中的 Mark Word 是锁状态实现的核心。偏向锁设计初衷是为了优化同一线程反复获取锁的场景,但在多线程竞争出现时,必须升级为轻量级锁。这一过程并非毫无代价,理解其触发条件与撤销开销,是进行高性能 Java 并发编程的必修课。 1.
Java并发 锁机制 偏向锁
22 0
Java CompletableFuture.thenCompose与thenApply的链式区别
2026-05-16 08:18:34
Java CompletableFuture.thenCompose与thenCompose的链式区别 在编写异步 Java 代码时,CompletableFuture 是处理多阶段任务的强大工具。许多开发者容易混淆 thenApply 和 thenCompose,导致代码产生不必要的嵌套结构,甚至
Java 异步编程 thenApply
43 0
Java CopyOnWriteArrayList在读多写少场景的写开销分析
2026-05-12 21:19:11
Java CopyOnWriteArrayList在读多写少场景的写开销分析 CopyOnWriteArrayList 是 Java 并发包 java.util.concurrent 中提供的一个线程安全的 List 实现。它的设计核心思想是“写时复制”(CopyOnWrite),这种机制使其在读多
Java并发 写时复制 写开销
31 0
Java ThreadPoolExecutor的allowCoreThreadTimeOut配置
2026-05-10 13:18:15
Java ThreadPoolExecutor的allowCoreThreadTimeOut配置 Java的ThreadPoolExecutor是线程池的核心实现,用于管理线程的生命周期和任务执行。其中,allowCoreThreadTimeOut是一个关键配置,它决定了核心线程是否可以超时并终止。
Java线程池 核心线程超时 线程管理
33 0
Java StampedLock的tryOptimisticRead乐观读在缓存中的应用
2026-05-10 11:18:44
Java StampedLock的tryOptimisticRead乐观读在缓存中的应用 在Java并发编程中,对于读多写少的场景,ReentrantReadWriteLock 是常用工具。但它的读锁会阻塞写锁,即使写操作非常短暂。StampedLock 提供了一种更高效的解决方案,其 tryOpt
Java并发 Stamped锁 乐观读
34 0
Java Exchanger线程间交换数据的同步工具
2026-05-06 03:23:01
Java Exchanger线程间交换数据的同步工具 Java Exchanger 是一个用于线程间协作的同步工具类,它允许两个线程在汇合点交换数据。它提供了一个同步点,在这个同步点,两个线程可以互换数据。这种设计模式非常适合像“生产者消费者”模式中,生产者需要缓冲区而消费者需要数据,或者遗传算法中
Java并发 多线程 线程同步
40 0
Java StampedLock.validate在乐观读后的验证机制
2026-05-05 03:14:00
Java StampedLock.validate在乐观读后的验证机制 StampedLock 是 Java 8 引入的锁机制,它的核心优势在于支持“乐观读”。乐观读假设在读取数据时没有写操作发生,因此不需要阻塞写线程,也不需要通过 CPU 内存屏障来强制同步缓存,性能极高。但这种假设是有风险的,必
Java并发 乐观读 验证机制
45 0
Java volatile和synchronized的区别与使用场景
2026-05-04 08:20:54
Java volatile和synchronized的区别与使用场景 Java并发编程中,处理多线程共享数据时,volatile 和 synchronized 是两个最核心的关键字。它们都能保证数据的可见性,但在实现机制、功能范围和性能开销上有本质区别。正确区分和使用它们,是编写高效并发程序的关键。
Java并发 多线程 volatile
41 0
Java StampedLock乐观读锁在缓存场景下的ABA问题
2026-05-04 05:17:53
Java StampedLock乐观读锁在缓存场景下的ABA问题 java.util.concurrent.locks.StampedLock 提供了一种乐观的读锁机制,旨在提高多线程并发读取共享数据(如缓存)的性能。在讨论其在缓存场景下的应用时,开发者常会提及“ABA问题”。本文将深入分析 Sta
Java并发 乐观读锁 ABA问题
43 0
Java CompletableFuture.allOf与anyOf的组合策略
2026-04-21 17:25:14
Java CompletableFuture.allOf与anyOf的组合策略 Java并发编程中,CompletableFuture 提供了强大的异步编排能力。掌握 allOf 和 anyOf 的组合使用,能够高效解决多任务并发执行、竞速调用及超时控制等复杂场景。 一、 核心机制与差异分析 在深入
Java并发 CompletableFuture 异步编程
62 0
Java LongAccumulator在并行归约计算中的应用
2026-04-21 11:26:57
Java LongAccumulator在并行归约计算中的应用 在处理高并发下的数据统计与归约计算时,传统的原子类(如 AtomicLong)往往因为激烈的竞争(CAS自旋)导致性能下降。LongAccumulator 是 JDK 8 引入的一个更强大的原子类,它支持自定义的归约操作,能够高效地在多
Java并发 并行归约 高并发
57 0
Java ForkJoinPool的work-stealing算法与任务分割
2026-04-20 17:26:38
Java ForkJoinPool的workstealing算法与任务分割 ForkJoinPool是Java并发编程中一个强大的工具,它基于workstealing算法实现了高效的并行任务处理。本文将带你深入了解ForkJoinPool的工作原理、任务分割策略以及实践应用,帮助你充分利用这一并发工
Java并发 ForkJoinPool 工作窃取
62 0
Java 锁升级过程:偏向锁到轻量级锁到重量级锁
2026-04-03 05:09:24
Java 锁升级过程:偏向锁到轻量级锁到重量级锁 Java 虚拟机(JVM)为了提升多线程环境下对象同步的性能,设计了一套锁升级机制。这套机制从最轻量的“偏向锁”开始,在竞争加剧时逐步升级为“轻量级锁”,最终在高竞争场景下转为“重量级锁”。整个过程对开发者透明,但理解其原理有助于写出更高效的并发代码
Java并发 锁升级 偏向锁
103 0
Java 锁重入与条件变量在ReentrantLock中的实现
2026-04-03 00:48:33
Java 锁重入与条件变量在 ReentrantLock 中的实现 Java 提供了 ReentrantLock 类作为内置锁(synchronized)的替代方案,它支持更灵活的锁控制。其中两个核心特性是锁重入和条件变量。理解它们的实现机制,能帮助你写出更高效、安全的并发代码。 什么是锁重入? 锁
Java并发 锁重入 ReentrantLock
84 0