标签:并发编程

共 110 篇文章

Java Thread.sleep与Object.wait的锁释放行为差异

Java Thread.sleep与Object.wait的锁释放行为差异 Java 多线程编程中,控制线程暂停的两种最常见方式是 Thread.sleep 和 Object.wa

# Java # 多线程 # 并发编程
2026-05-06 173 0

Java Thread.interrupt()方法对阻塞IO的局限性

Java Thread.interrupt方法对阻塞IO的局限性 在 Java 多线程编程中,开发者习惯使用 Thread.interrupt 方法来请求停止线程。对于正在执行计算

# Java # 多线程 # 线程中断
2026-05-06 195 0

Java Exchanger线程间交换数据的同步工具

Java Exchanger线程间交换数据的同步工具 Java Exchanger 是一个用于线程间协作的同步工具类,它允许两个线程在汇合点交换数据。它提供了一个同步点,在这个同步

# Java并发 # 多线程 # 线程同步
2026-05-06 149 0

Go语言sync.WaitGroup的Add和Done不匹配导致死锁

Go语言sync.WaitGroup的Add和Done不匹配导致死锁 Go 语言中的 sync.WaitGroup 是用于等待一组 Goroutine 完成执行的同步原语。死锁通常

# Go语言 # 死锁 # 并发编程
2026-05-06 139 0

Go语言竞态条件在map并发读写时的崩溃复现

Go语言竞态条件在map并发读写时的崩溃复现 Go 语言内置的 map 类型并不支持并发安全读写。当多个 goroutine 同时对同一个 map 进行写入或读写混合操作时,程序会

# Go语言 # 并发编程 # 竞态条件
2026-05-05 144 0

Python asyncio.TaskGroup取代gather的结构化并发

Python asyncio.TaskGroup取代gather的结构化并发 在 Python 异步编程中,管理多个并发任务长期以来依赖于 asyncio.gather。然而,ga

# Python # asyncio # 异步编程
2026-05-05 210 0

Java线程池ThreadPoolExecutor的饱和策略源码解读

Java线程池ThreadPoolExecutor的饱和策略源码解读 在使用 ThreadPoolExecutor 时,当线程池的核心线程数已满、任务队列也已满,并且线程数达到最大

# Java # 线程池 # 饱和策略
2026-05-05 156 0

Java StampedLock.validate在乐观读后的验证机制

Java StampedLock.validate在乐观读后的验证机制 StampedLock 是 Java 8 引入的锁机制,它的核心优势在于支持“乐观读”。乐观读假设在读取数据

# Java并发 # 乐观读 # 验证机制
2026-05-05 148 0

Java Phaser分阶段同步屏障替代CyclicBarrier的优势

Java Phaser分阶段同步屏障替代CyclicBarrier的优势 Java并发包(J.U.C)中的 Phaser 是一个功能强大的同步工具,它解决了 CyclicBarri

# Java # 并发编程 # Phaser
2026-05-04 172 0

C++ std::scoped_lock同时锁定多个互斥量避免死锁

C++ std::scopedlock同时锁定多个互斥量避免死锁 在多线程编程中,当需要同时操作多个共享资源时,如果锁的顺序不一致,极易发生死锁。死锁会导致程序挂起,无法继续执行。

# C++编程 # 多线程 # 死锁
2026-05-04 175 0

Go语言atomic.CompareAndSwap的ABA问题与解决方案

Go语言atomic.CompareAndSwap的ABA问题与解决方案 并发编程中,atomic 包提供的原子操作是保证数据安全的重要手段。其中 CompareAndSwap(简

# Go语言 # 并发编程 # 原子操作
2026-05-03 175 0

Go语言context.Done()通道在取消时的关闭行为

Go语言context.Done通道在取消时的关闭行为 在 Go 语言并发编程中,context 包是控制 Goroutine 生命周期的核心工具。理解 context.Done

# Go语言 # 并发编程 # Context
2026-05-03 149 0

Go语言select在default case下的非阻塞语义

Go语言select在default case下的非阻塞语义 Go语言的 select 语句是处理多个通道操作的核心机制。通常情况下,select 会阻塞,直到其中一个 case

# Go语言 # select # 非阻塞
2026-05-03 168 0

Go语言Goroutine的GOMAXPROCS与CPU核心数的关系

Go语言Goroutine的GOMAXPROCS与CPU核心数的关系 GOMAXPROCS 是 Go 语言运行时(runtime)中的一个关键参数,它直接决定了 Go 程序能够同时

# Go语言 # 并发编程 # CPU核心数
2026-05-02 195 0

Python GIL锁对多线程CPU密集型任务的性能瓶颈分析

Python GIL锁对多线程CPU密集型任务的性能瓶颈分析 Python 的多线程在处理计算密集型任务时往往无法达到预期的加速效果,甚至可能比单线程更慢。这主要源于 Python

# Python # GIL # 多线程
2026-05-02 172 0

Go语言通道的happens-before关系与内存可见性

Go语言通道的happensbefore关系与内存可见性 Go语言的并发模型以通道为核心,理解通道的 happensbefore 关系是编写无数据竞争代码的关键。happensbe

# Go语言 # 并发编程 # 通道
2026-05-02 159 0

Java ForkJoinPool的工作窃取算法如何提升CPU利用率

传统线程池在处理大量细粒度任务时,常因线程阻塞或任务分配不均导致 CPU 空转。Java 的 ForkJoinPool 通过“工作窃取”算法解决了这一痛点,让每个线程都能保持忙碌状

# Java # ForkJoin # 工作窃取
2026-05-02 154 0

Go语言time.After与context.WithTimeout的超时精度对比

Go语言time.After与context.WithTimeout的超时精度对比 Go语言在处理并发超时控制时,主要提供两种机制:time.After 和 context.Wit

# Go语言 # 并发编程 # 超时控制
2026-05-01 162 0

Java ConcurrentHashMap在JDK8中为什么放弃分段锁

Java ConcurrentHashMap在JDK8中为什么放弃分段锁 Java 8 对 ConcurrentHashMap 进行了彻底的重构,彻底摒弃了 Java 7 中使用的

# Java # JDK8 # 分段锁
2026-05-01 182 0

Go语言atomic.Value的Store与Load的原子性保证

Go语言atomic.Value的Store与Load的原子性保证 Go语言中的 atomic.Value 提供了一种无需加锁即可并发安全地读写特定类型值的机制。其核心方法 Sto

# Go语言 # 并发编程 # 原子操作
2026-05-01 172 0