首页
文章列表
标签墙
返回找工具啦
多线程
共 51 篇文章
Java StampedLock的乐观读失败后转换为悲观读锁
2026-05-17 23:30:38
Java StampedLock的乐观读失败后转换为悲观读锁 Java 并发包中的 StampedLock 提供了一种乐观读机制,通常比标准的 ReentrantReadWriteLock 更快。它的核心思路是:先试着读数据,如果发现数据正在被修改,再升级为悲观读锁。 核心操作流程 乐观读不会阻塞写
Java
并发编程
乐观读
30
0
Java ThreadPoolExecutor的keepAliveTime与核心线程回收
2026-05-16 00:12:25
Java ThreadPoolExecutor的keepAliveTime与核心线程回收 Java线程池 ThreadPoolExecutor 通过控制线程数量来平衡性能与资源消耗。其中,keepAliveTime 参数决定了空闲线程的存活时间,而核心线程的回收机制常常被误解。默认情况下,核心线程即
Java
线程池
核心线程回收
46
0
Java CAS操作的ABA问题与AtomicStampedReference的解决
2026-05-09 01:16:40
Java CAS操作的ABA问题与AtomicStampedReference的解决 Java中的CAS(CompareAndSwap)是一种无锁算法,用于实现多线程环境下的原子操作。它通过比较内存中的值与预期值,如果相等则更新为新值,否则不做任何操作。这种机制在java.util.concurre
Java
CAS
ABA问题
63
0
Java Thread.sleep与Object.wait的锁释放行为差异
2026-05-06 21:15:51
Java Thread.sleep与Object.wait的锁释放行为差异 Java 多线程编程中,控制线程暂停的两种最常见方式是 Thread.sleep 和 Object.wait。虽然它们都能让线程停止运行,但在锁的释放行为上有着本质的区别。理解这一差异对于避免死锁和提高并发性能至关重要。 1
Java
多线程
并发编程
43
0
Java Thread.interrupt()方法对阻塞IO的局限性
2026-05-06 12:19:00
Java Thread.interrupt方法对阻塞IO的局限性 在 Java 多线程编程中,开发者习惯使用 Thread.interrupt 方法来请求停止线程。对于正在执行计算任务或处于 wait、sleep 状态的线程,该方法通常能立即生效。然而,当线程陷入传统的阻塞 IO(Blocking
Java
多线程
线程中断
54
0
Java Exchanger线程间交换数据的同步工具
2026-05-06 03:23:01
Java Exchanger线程间交换数据的同步工具 Java Exchanger 是一个用于线程间协作的同步工具类,它允许两个线程在汇合点交换数据。它提供了一个同步点,在这个同步点,两个线程可以互换数据。这种设计模式非常适合像“生产者消费者”模式中,生产者需要缓冲区而消费者需要数据,或者遗传算法中
Java并发
多线程
线程同步
40
0
为什么说ArrayList线程不安全?并发修改异常复现与分析
2026-05-05 00:15:34
为什么说ArrayList线程不安全?并发修改异常复现与分析 1. 复现并发修改异常 ArrayList 是 Java 开发中最常用的集合之一,但它并不是线程安全的。当多个线程同时对同一个 ArrayList 实例进行结构性修改(如添加、删除元素)时,很容易引发 java.util.Concurre
ArrayList
线程安全
并发修改异常
42
0
Java Phaser分阶段同步屏障替代CyclicBarrier的优势
2026-05-04 19:26:51
Java Phaser分阶段同步屏障替代CyclicBarrier的优势 Java并发包(J.U.C)中的 Phaser 是一个功能强大的同步工具,它解决了 CyclicBarrier 和 CountDownLatch 在某些复杂场景下的局限性。Phaser 提供了更灵活的线程同步机制,特别是在线程
Java
并发编程
Phaser
45
0
C++ std::scoped_lock同时锁定多个互斥量避免死锁
2026-05-04 14:29:00
C++ std::scopedlock同时锁定多个互斥量避免死锁 在多线程编程中,当需要同时操作多个共享资源时,如果锁的顺序不一致,极易发生死锁。死锁会导致程序挂起,无法继续执行。C++17 引入了 std::scopedlock,这是一个专门为了解决多锁死锁问题而设计的工具。它不仅能一次性锁定多个
C++编程
多线程
死锁
39
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
Go语言atomic.CompareAndSwap的ABA问题与解决方案
2026-05-03 19:20:18
Go语言atomic.CompareAndSwap的ABA问题与解决方案 并发编程中,atomic 包提供的原子操作是保证数据安全的重要手段。其中 CompareAndSwap(简称 CAS)操作因为无需加锁而被广泛使用。但在特定场景下,CAS 操作存在一个隐蔽的逻辑漏洞,被称为 ABA 问题。以下
Go语言
并发编程
原子操作
46
0
JavaScript Atomics.waitAsync非阻塞等待SharedArrayBuffer
2026-05-03 11:13:25
JavaScript Atomics.waitAsync非阻塞等待SharedArrayBuffer JavaScript 主线程是单线程的,这意味着如果在主线程中执行耗时操作会阻塞页面渲染,导致用户界面卡顿。在使用 SharedArrayBuffer 进行多线程(Web Workers)共享内存操
JS
Atomics
共享内存
40
0
Java Thread.interrupted()与isInterrupted()的状态清除差异
2026-05-02 23:19:06
Java Thread.interrupted与isInterrupted的状态清除差异 处理 Java 多线程中断时,混淆 Thread.interrupted 和 isInterrupted 会导致线程无法正确停止或逻辑死循环。这两者的核心区别在于对“中断状态”标志位的处理方式:前者会自动清除状
Java
多线程
线程中断
56
0
Python GIL锁对多线程CPU密集型任务的性能瓶颈分析
2026-05-02 15:14:20
Python GIL锁对多线程CPU密集型任务的性能瓶颈分析 Python 的多线程在处理计算密集型任务时往往无法达到预期的加速效果,甚至可能比单线程更慢。这主要源于 Python 解释器中的全局解释器锁。本文将带你直观地复现这一性能瓶颈,分析其底层原理,并提供切实可行的解决方案。 1. 理解 GI
Python
GIL
多线程
41
0
Java ThreadLocalMap的线性探测法解决哈希冲突
2026-05-01 23:17:20
Java ThreadLocalMap的线性探测法解决哈希冲突 ThreadLocalMap 是 Java ThreadLocal 的核心存储结构,用于维护线程特有的变量副本。不同于 Java 集合框架中常见的 HashMap 使用链表法或红黑树来处理哈希冲突,ThreadLocalMap 选择了线
Java
线性探测法
哈希冲突
55
0
Java ConcurrentHashMap在JDK8中为什么放弃分段锁
2026-05-01 16:23:32
Java ConcurrentHashMap在JDK8中为什么放弃分段锁 Java 8 对 ConcurrentHashMap 进行了彻底的重构,彻底摒弃了 Java 7 中使用的“分段锁”机制,转而采用了 CAS + synchronized 的组合方式。这一改变并非为了标新立异,而是为了解决旧设
Java
JDK8
分段锁
59
0
Java volatile为什么能禁止指令重排序:内存屏障原理
2026-04-29 23:15:22
Java volatile为什么能禁止指令重排序:内存屏障原理 在Java多线程编程中,代码的执行顺序往往并不等同于源代码的编写顺序。编译器和处理器为了优化性能,会对指令进行重排序。在单线程环境下,这种优化不会影响结果,但在多线程环境下,指令重排会导致严重的并发安全问题。volatile 关键字正是
Java
volatile
指令重排序
56
0
C++ std::shared_ptr的use_count在并发下的近似性说明
2026-04-28 14:21:10
C++ std::sharedptr的usecount在并发下的近似性说明 std::sharedptr 是 C++ 中常用的智能指针,通过引用计数机制管理对象的生命周期。usecount 方法用于返回当前指向该对象的 sharedptr 实例数量。然而,在并发编程环境下,依赖 usecount 的
C++
shared_ptr
并发
44
0
Java偏向锁撤销时的安全点停顿问题分析
2026-04-27 04:19:44
Java偏向锁撤销时的安全点停顿问题分析 Java偏向锁是为了在无竞争情况下减少获取锁性能损耗而引入的优化机制,它假设锁通常由同一线程多次获得。然而,一旦出现第二个线程尝试获取锁,偏向锁就必须撤销,这个过程并非瞬间完成,而是依赖于JVM的全局安全点,这会导致系统性能出现不可预测的停顿。 一、 理解偏
Java
偏向锁
安全点
49
0
1
2
3
下一页