并发编程

AI人工智能+电脑小能手17 小时前
java·线程池·并发编程·1024程序员节·批量处理·并行任务
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合📌 高并发系统设计: 基于Redis与MQ的秒杀系统架构:库存预减、防超卖与限流防刷全流程解析一组 Supplier 并行提交到指定线程池,按提交顺序聚合结果,支持整体超时与单任务异常隔离,把「一次请求要打好几个下游」收成一次调用。
zzu123zsw3 天前
java·网络·spring boot·网络协议·rpc·并发编程
面对多 RPC 扇入超时崩溃:深入 asyncTool 核心 DAG 编排与线程池隔离防护在现代分布式电商中台或高吞吐聚合网关(BFF)架构中,一个典型业务页面或接口(如商品详情页聚合、购物车结算收银台、个人中心仪表盘)往往需要在短短数百毫秒内,从底层数十个独立的微服务系统中并发拉取海量数据。
Thinker QAQ4 天前
java·python·go·并发编程·shared memory·message passing
并发编程(十一):Shared Memory 与 Message Passing——关系与组合使用前面的文章已经分别讨论了 Shared Memory 和 Message Passing 两种并发协作模型。
Thinker QAQ10 天前
java·python·go·并发编程·channel·blockingqueue·message passing
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性在第零篇中,我们从多个并发执行单元如何交换数据、协调工作的角度,提出了两种典型的并发协作模型:前面几篇主要沿着 Shared Memory 展开,从 Mutex、Atomic 到 ReadWriteLock,解释了这些同步机制如何提供 Atomicity、Visibility 和 Ordering。
范中勤10 天前
python·agent·协程·并发编程·asyncio
Python 协程(Coroutine)通俗讲解与技术原理:从 await 挂起到 Agent 高并发线程由操作系统内核调度;协程由代码(事件循环)在用户态自己调度的"轻量子程序"。类比(修正版)注意这个类比里最关键的一环:协程必须"主动让出"。如果有人占着工位不挪窝,整间办公室就他一个人干活。
范中勤12 天前
python·llm·协程·并发编程·asyncio
Python Asyncio 协程与 LLM 异步并发原理技术文档(与 Java 对比|彻底澄清所有误区)Python 协程不是线程、不新开线程、不由 OS 调度。协程是:单 OS 线程内、用户态事件循环、协作式调度的轻量 IO 并发模型。
code2cat14 天前
java·cas·并发编程
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中上一篇用AtomicIntegerFieldUpdater处理对象里的名额。这次把场景换成上传额度:一个账户最多累计接收100亿字节,多个上传任务同时申请额度。每次申请都要先判断容量,再把申请量加入累计值。
deepseek2314 天前
数据库·python·sqlite·并发编程·wal
SQLite WAL 开了仍报 database is locked?Python 后台任务的事务与幂等修复有团队把SQLite切换成WAL以后,以为多个Python进程能同时修改一个数据库文件。读请求确实更加顺畅,后台任务却仍然偶尔报database is locked。这不是WAL失效。SQLite官方明确说明:WAL允许读取和写入更好地并行,但一个时刻仍只有一名写入者。几个进程使用不同连接,也不会获得多名写入者同时提交的能力。了解这个限制以后,诊断重点就应当从一味增加超时,转到真正的事务边界。
code2cat19 天前
java·开发语言·cas·并发编程·逻辑删除
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变上一篇用AtomicStampedReference记录引用的变化轮次。继续往下看,有些业务只需要表达两个状态:节点还有效,或者节点已被标记删除。把一个布尔值与引用一起观察,就能让提交条件带上这个状态。
无名猿19 天前
c++·性能优化·并发编程·现代c++
手写一个线程池:任务队列、工作线程与停止顺序的三个设计点每个任务 new 一个 std::thread 是并发编程里最贵的偷懒方式:线程创建要走系统调用,栈空间按兆算,销毁又要再来一遍。当任务本身只有几微秒时,你花在「造线程」上的时间会比干活多几十倍。 线程池的思路很朴素:线程只创建一次,任务排队,谁空谁取。这篇从零把它写出来,然后把三个最容易写错的设计点讲透。
无名猿19 天前
c++·性能优化·并发编程·现代c++
锁进阶:atomic_flag 自旋锁、shared_mutex 读写锁与无锁的代价std::mutex 不是免费的:一旦发生竞争,抢不到锁的线程会被挂进内核,等锁释放再被唤醒,这一挂一醒就是两次上下文切换,微秒级开销。可如果你的临界区只有「++counter」这么短,等锁的时间可能比干活的时间还长。这篇讲清锁的三条进阶路线:极短临界区用自旋锁(atomic_flag 实现)、读多写少用读写锁(shared_mutex)、以及「别迷信无锁,先测再选」。
code2cat20 天前
java·cas·并发编程·aba
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化上一篇用AtomicReference发布一份完整状态。接着往下想:线程读到引用A,准备稍后提交;期间另一个线程把A换成B,再换回同一个A。这时,只比较引用还能看见中间那次变化吗?
code2cat21 天前
java·并发编程·不可变对象·atomicreference
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态上一篇用LongAccumulator处理可以合并的统计样本。配置更新面对的是另一类问题:版本号、超时值和路由列表需要一起变化,读取者也希望拿到同一份状态。把这些字段装进不可变对象,再整体替换引用,能让更新边界更容易看清。
无名猿21 天前
c++·内存管理·并发编程·现代c++
shared_ptr 的线程安全边界:计数安全不等于对象安全std::shared_ptr 大概是 C++ 里被误解最多的类型。很多人听说「它的引用计数是线程安全的」,就放心地把它当全局变量、在线程之间随手赋值,然后在大压力下偶发崩溃或者计数错乱。
无名猿21 天前
c++·性能优化·并发编程·现代c++
shared_mutex 读写锁该不该用,以及 volatile 的三大误解「读多写少,那用读写锁肯定更快吧。」这句话是并发优化里最常见的直觉,也是最常翻车的一个。std::shared_mutex(C++17)确实做到了多读者并存、写者独占,但它的独占成本比 std::mutex 高,读者路径还要动一个共享计数器。下面先讲清该怎么用、什么时候别用,再顺手把 volatile 的三大误解拆掉。这两件事总是一起出现,因为动机都一样:想省掉那把锁。
Thinker QAQ22 天前
java·python·go·并发编程·volatile·memory model
并发编程(七):volatile——从语言规则到 CPU前两篇从语言规则一路看到 CPU,解释了 Atomic 如何提供 Atomicity、Visibility 和 Ordering。
code2cat23 天前
java·并发编程·原子类·longadder
Java进阶篇之LongAdder:把统计更新分散,再读取总和上一篇通过AtomicInteger与CAS理解了单个共享值的原子更新。当大量线程只想“记一次请求”,共同修改一个计数器就容易形成竞争。统计场景还有另一种思路:把更新压力分散到多个累加单元,读取时再合并结果。
Thinker QAQ1 个月前
java·go·cas·并发编程·atomic·cpython
并发编程(六):Atomic 的实现——从 Runtime 到 CPU上一篇从语言内存模型的规则出发,看 Atomic 如何提供 Atomicity、Visibility 和 Ordering。
letisgo51 个月前
java·面试·并发编程·aqs·jmm
JAVA 高级进阶02篇《并发编程三板斧:JMM、CAS与AQS的源码级拆解》「Java高级技能提升系列」第02篇(全20篇)· 面向2026年中高级Java岗面试 · 专栏持续更新,欢迎关注
Java爱好狂.2 个月前
程序员·高并发·架构师·并发编程·java面试·java面试题·java八股文
Java初学者如何设计一个高并发系统?设计一个高并发系统并非易事,如果不站在巨人的肩膀上来开展工作的话,这条路是很难保持一路畅通的!所以,本着好东西就是要拿出来分享的原则,LZ就把前段时间从阿里的一位老哥手上捞到的百亿级系统架构设计实录分享给大家,希望能对想接触架构的朋友或者已经是架构师的朋友们得到一点启发!