标签:并发编程

共 110 篇文章

Java Fork/Join框架的工作窃取算法解析

Java Fork/Join框架的工作窃取算法解析 Fork/Join框架是什么? 想象一个复杂的大任务,比如对一个大型数组排序。你可以拆分这个任务:先把它分成两个更小的子数组分别

# JavaFork/Join框架 # 工作窃取算法 # 线程池
2026-06-14 110 0

Elixir GenServer的call和cast在消息处理顺序上的语义差异

Elixir GenServer的call和cast在消息处理顺序上的语义差异 理解Elixir中GenServer的 call 和 cast 的区别,是编写高效、可靠并发代码的关

# Elixir # GenServer # call
2026-06-04 153 0

Go语言的sync.Map与并发安全Map

Go语言的sync.Map与并发安全Map 在Go语言中,当多个Goroutine(可以理解为轻量级线程)需要同时读写同一个map时,会发生竞争条件,导致程序崩溃或数据错乱。本文将

# Go语言 # sync.Map # 并发安全
2026-06-02 158 0

Go语言的channel无缓冲与有缓冲的使用场景

Go语言的channel无缓冲与有缓冲的使用场景 理解 channel 的工作模式是编写高效、无竞态的 Go 并发程序的关键。无缓冲 channel 和有缓冲 channel 虽然

# Go语言 # channel # 无缓冲channel
2026-06-01 165 0

Java ThreadPoolExecutor的拒绝策略与自定义

Java ThreadPoolExecutor的拒绝策略与自定义 在多线程编程中,ThreadPoolExecutor 是Java线程池的核心实现。当提交给线程池的任务数量超过其最

# Java线程池 # 拒绝策略 # ThreadPoolExecutor
2026-05-31 183 0

Go recover 为什么只能拦截当前 Goroutine 的 panic 而无法跨协程

Go recover 为什么只能拦截当前 Goroutine 的 panic 而无法跨协程 理解 panic 与 recover 的本质 思考一个场景:你和同事各自负责独立的项目模

# Go语言 # panic机制 # recover机制
2026-05-24 174 0

Go 语言 Goroutine 泄漏的常见模式与 runtime.NumGoroutine 监控

Go 语言 Goroutine 泄漏的常见模式与 runtime.NumGoroutine 监控 Goroutine 泄漏是 Go 程序中一种隐蔽且危害巨大的资源问题。泄漏的 Go

# Go语言 # Goroutine泄漏 # 并发编程
2026-05-24 197 0

Go sync.Cond 为什么必须在 Wait 前加锁与伪唤醒的防范

Go sync.Cond 为什么必须在 Wait 前加锁与伪唤醒的防范 Go 语言的 sync.Cond 是一个强大的同步原语,用于在共享状态发生变化时通知等待的 goroutin

# Go语言 # sync.Cond # Wait方法
2026-05-24 179 0

Go context.WithValue 为什么不适合用来传递业务参数

Go context.WithValue 为什么不适合用来传递业务参数 在Go语言的并发编程中,context 包是一个核心工具,用于在goroutine之间传递截止时间、取消信号

# Go语言 # context.WithValue # 业务参数
2026-05-23 162 0

Java Phaser 同步屏障为什么比 CyclicBarrier 更适合动态注册任务

Java Phaser 同步屏障为什么比 CyclicBarrier 更适合动态注册任务 在需要多个线程同步完成某个阶段任务,然后才能一起进入下一阶段的场景中,CyclicBarr

# JavaPhaser # 同步屏障 # CyclicBarrier
2026-05-22 149 0

Java StampedLock的乐观读失败后转换为悲观读锁

Java StampedLock的乐观读失败后转换为悲观读锁 Java 并发包中的 StampedLock 提供了一种乐观读机制,通常比标准的 ReentrantReadWrite

# Java # 并发编程 # 乐观读
2026-05-17 187 0

Java Semaphore信号量实现限流与资源池控制

Java Semaphore信号量实现限流与资源池控制 Java并发编程中,Semaphore(信号量)是一种核心同步工具,用于控制同时访问特定资源的线程数量。它通过维护一组“许可

# Java # 并发编程 # 信号量
2026-05-15 164 0

Go语言Map并发读写panic的复现与sync.Map的替代方案

Go语言Map并发读写panic的复现与sync.Map的替代方案 Go语言的原生map并不支持并发读写操作。如果在多个协程中同时对同一个map进行读写,程序会直接触发panic导

# Go语言 # 并发编程 # Map
2026-05-15 168 0

Java CompletableFuture组合异步操作的超时处理策略

Java CompletableFuture组合异步操作的超时处理策略 在异步编程中,单个任务的超时控制相对简单,但多个 CompletableFuture 组合操作(如并行执行、

# Java # 异步编程 # 超时处理
2026-05-14 196 0

Go语言sync.Once为什么能保证只执行一次

Go语言sync.Once为什么能保证只执行一次 sync.Once 是 Go 标准库中一个非常实用的工具,用于确保某个操作在程序运行期间只执行一次。无论有多少个 goroutin

# Go语言 # sync.Once # 并发编程
2026-05-11 177 0

Java ThreadPoolExecutor的allowCoreThreadTimeOut配置

Java ThreadPoolExecutor的allowCoreThreadTimeOut配置 Java的ThreadPoolExecutor是线程池的核心实现,用于管理线程的生

# Java线程池 # 核心线程超时 # 线程管理
2026-05-10 204 0

Go语言select在多个case同时就绪时的选择概率分布

Go语言select在多个case同时就绪时的选择概率分布 引言 Go语言的select语句用于从多个channel操作中选择一个执行。当多个case同时就绪时,select会选择

# Go语言 # select语句 # 概率分布
2026-05-10 159 0

Go语言Select语句的伪随机选择机制源码解析

Go语言的select语句是并发编程中处理多个通道(channel)操作的关键工具。当select语句中存在多个可执行的case时,Go运行时会从中随机选择一个执行。这种“随机”并

# Go语言 # Select语句 # 并发编程
2026-05-09 188 0

Java CAS操作的ABA问题与AtomicStampedReference的解决

Java CAS操作的ABA问题与AtomicStampedReference的解决 Java中的CAS(CompareAndSwap)是一种无锁算法,用于实现多线程环境下的原子操

# Java # CAS # ABA问题
2026-05-09 197 0

Go语言Goroutine泄漏检测:pprof与runtime.NumGoroutine

Go语言Goroutine泄漏检测:pprof与runtime.NumGoroutine Goroutine泄漏是Go语言开发中常见且隐蔽的问题。当一个Goroutine被创建但未

# Go语言 # Goroutine泄漏 # pprof
2026-05-07 186 0