首页
文章列表
标签墙
返回找工具啦
并发编程
共 105 篇文章
Java AtomicStampedReference解决ABA问题的版本号机制
2026-04-22 02:23:53
Java AtomicStampedReference解决ABA问题的版本号机制 在多线程环境中使用 CAS(CompareAndSwap)操作时,会遇到一个被称为“ABA 问题”的典型陷阱。简单来说,就是一个共享变量的值从 A 变成了 B,又从 B 变回了 A。其他线程若只检查值,会误以为它从未被
Java
多线程
并发编程
57
0
Java CompletableFuture.thenAccept与thenRun的返回值差异
2026-04-22 01:13:09
Java CompletableFuture.thenAccept与thenRun的返回值差异 在 Java 异步编程中,CompletableFuture 是处理并发任务的核心工具。理解 thenAccept 和 thenRun 的区别,对于精准控制任务执行流程和数据传递至关重要。以下指南将手把手
Java
异步编程
并发编程
61
0
Go语言select在多个channel就绪时的伪随机选择
2026-04-22 00:23:57
Go语言select在多个channel就绪时的伪随机选择 Go 语言中的 select 语句是处理多个 channel 并发操作的利器。当多个 channel 同时满足读写条件(即“就绪”)时,Go 运行时并不会按照代码书写的顺序或者先进先出的原则进行选择,而是采用了一种伪随机的算法。这种机制的设
Go语言
并发编程
select
63
0
Python asyncio与多线程的性能对比:IO密集场景实测
2026-04-21 20:21:54
Python asyncio与多线程的性能对比:IO密集场景实测 在处理网络爬虫、数据库查询或API请求等IO密集型任务时,CPU大部分时间都在等待IO操作完成。为了提升效率,Python提供了多线程和异步IO两种主流并发方案。本文将通过模拟访问500台数据库的场景,实测对比两者的性能差异,并解析背
Python
Asyncio
多线程
54
0
Java CompletableFuture.supplyAsync的默认线程池陷阱
2026-04-21 13:21:28
Java CompletableFuture.supplyAsync的默认线程池陷阱 在Java后端开发中,为了提高接口响应速度,常使用 CompletableFuture.supplyAsync 进行异步编排。然而,若使用不当,这个看似简便的API会成为系统性能的“隐形杀手”。当系统在高峰期出现莫
Java
并发编程
线程池
66
0
Java AQS独占锁与共享锁的实现差异
2026-04-21 02:20:08
Java AQS独占锁与共享锁的实现差异 Java 并发包(JUC)中的 AbstractQueuedSynchronizer(AQS)是构建锁和同步器的基础框架。AQS 内部主要维护了一个由双向链表组成的同步队列,并使用一个 volatile int state 变量来表示同步状态。理解独占锁与共
Java
AQS
独占锁
67
0
Java ThreadGroup的activeCount与枚举活动线程的竞态条件
2026-04-20 20:30:44
Java ThreadGroup的activeCount与枚举活动线程的竞态条件 在Java多线程开发中,ThreadGroup 类提供了一种将多个线程归类管理的便捷方式。开发者经常需要获取组内所有活动线程的引用以进行监控或批量操作。通常的做法是结合使用 activeCount 和 enumerat
Java
多线程
线程组
55
0
Java双重检查锁单例为什么要加volatile
2026-04-20 19:18:46
Java双重检查锁单例为什么要加volatile 在Java单例模式的实现中,双重检查锁定是一种常见的写法。很多开发者都知道代码中要加 volatile 关键字,但往往不清楚其深层原因。如果忽略这个关键字,在高并发场景下,你的程序可能会返回一个未经完全初始化的对象,导致不可预料的错误。 1. 审视标
Java单例模式
双重检查锁
volatile
50
0
C++多线程中数据竞争导致的未定义行为排查
2026-04-20 18:14:04
C++多线程中数据竞争导致的未定义行为排查 数据竞争是多线程编程中最棘手的问题之一。当两个或多个线程同时访问同一块内存,且其中至少一个是写操作,且没有适当的同步机制时,就会发生数据竞争。在C++中,这属于未定义行为,意味着程序可能崩溃、产生错误结果,或者看似正常运行。本文将指导你如何编写复现案例,并
C++多线程
数据竞争
未定义行为
54
0
Java CopyOnWriteArrayList的写时复制机制与适用场景
2026-04-20 15:25:50
Java CopyOnWriteArrayList的写时复制机制与适用场景 1. 认识CopyOnWriteArrayList 查看 Java集合框架中的CopyOnWriteArrayList类,你会发现它是ArrayList的一个线程安全变体。理解 CopyOnWriteArrayList的基本
Java集合
线程安全
写时复制
41
0
Java LockSupport.park与unpark的线程阻塞唤醒机制
2026-04-19 12:19:10
Java LockSupport.park与unpark的线程阻塞唤醒机制 LockSupport 是 Java 并发包 java.util.concurrent.locks 中最基础的线程阻塞原语,用于构建锁和其他同步工具。与传统的 Object.wait/notify 相比,它不需要获取监视器锁
Java
多线程
并发编程
57
0
Go 并发模式:worker pool 实现
2026-04-19 03:27:07
Go 并发模式:worker pool 实现 处理高并发任务时,无限制地创建 goroutine 会导致系统资源耗尽。Worker Pool(工作池)模式通过固定数量的 Worker 协同处理任务队列,既能利用并发优势,又能有效控制系统负载。以下是具体实现步骤。 理解 Worker Pool 的工作
Go语言
并发编程
工作池
51
0
Rust 异步编程:async/await 与 futures
2026-04-18 06:28:21
Rust 异步编程:async/await 与 futures 在 Rust 中处理高并发 I/O 操作(如网络请求、文件读写)时,传统的同步阻塞模式会严重浪费 CPU 资源。Rust 提供的 async/await 语法和 Future 机制,允许我们在单线程中高效处理大量并发任务。以下指南将带你
Rust编程
异步编程
并发编程
81
0
Go 并发模式:工作池与扇入扇出
2026-04-17 07:15:11
Go 并发编程的核心在于高效利用多核 CPU,同时避免资源耗尽。通过控制并发粒度,我们可以显著提升数据处理速度。以下是构建工作池与扇入扇出模式的实操指南。 第一部分:工作池 工作池模式的核心思想是限制并发运行的 Goroutine 数量。想象你有一个无限长的任务列表,但只有 3 个工人来处理,这样可
Go语言
并发编程
工作池
62
0
Python 线程池:concurrent.futures.ThreadPoolExecutor
2026-04-17 04:27:54
Python 线程池:concurrent.futures.ThreadPoolExecutor 在处理 I/O 密集型任务(如网络请求、文件读写)时,为了提高程序运行效率,我们需要使用多线程。Python 标准库中的 concurrent.futures 模块提供了一个高级接口 ThreadPoo
Python
多线程
线程池
93
0
Java 线程局部变量ThreadLocal内存泄漏分析
2026-04-14 17:26:50
Java 线程局部变量ThreadLocal内存泄漏分析 认识 ThreadLocal的基本概念。ThreadLocal是Java中提供的一种线程绑定机制,它能让每个线程拥有自己的变量副本,避免了多线程环境下的资源竞争问题。当你在一个线程中设置ThreadLocal变量时,这个变量只对该线程可见,其
Java
ThreadLocal
内存泄漏
79
0
Go语言Race Detector检测并发竞争实战
2026-04-13 14:25:11
Go语言Race Detector检测并发竞争实战 Go语言以轻量级并发(Goroutine)著称,但并发带来的数据竞争是导致程序崩溃或产生不可预测结果的头号杀手。Race Detector(竞争检测器)是Go官方提供的强大工具,能帮助我们在开发和测试阶段自动发现并发问题。以下将演示如何编写含Bug
Go语言
并发竞争
RaceDetector
66
0
Go 互斥锁:sync.Mutex 与 sync.RWMutex
2026-04-12 11:23:28
Go 互斥锁:sync.Mutex 与 sync.RWMutex 并发编程中,多个协程同时访问共享数据会导致数据竞争。Go 语言提供了 sync.Mutex 和 sync.RWMutex 两种锁机制来解决这个问题。以下指南将直接展示如何选择和使用这两种锁。 1. 基础互斥锁:sync.Mutex s
Go语言
并发编程
互斥锁
69
0
Python 多线程问题:GIL 与并发性能
2026-04-11 12:18:28
Python 多线程问题:GIL 与并发性能 Python 的多线程性能长期受限于全局解释器锁(GIL)。随着 2025 年 Python 3.14 的正式发布,去 GIL 的“自由线程”模式终于从实验走向了官方发行版。对于开发者而言,这意味着并发编程的规则已经改变。理解 GIL 的影响以及如何在
Python
多线程
GIL
97
0
Java 并发编程:线程池与线程安全
2026-04-11 00:22:14
Java 并发编程:线程池与线程安全 在 Java 开发中,多线程是提升性能的利器,但直接使用 new Thread 往往会导致资源耗尽或数据错乱。通过线程池管理线程生命周期,并利用同步机制保证线程安全,是编写高并发程序的必经之路。 一、 创建与管理线程池 频繁创建和销毁线程会消耗大量系统资源。线程
Java
并发编程
多线程
86
0
上一页
1
2
3
4
5
6
下一页