标签:并发编程

置顶 精华 原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)

一、为什么不推荐 Executors 阿里开发手册明确禁止使用 Executors 创建线程池,原因是: newFixedThreadPool 使用无界队列 LinkedBlockingQueue,可能 OOMnewCachedThreadPool 最大线程数为 Integer.MAX_VALUE,...
1个月前 阅读 1.6万 点赞 870 评论 2

原创 Redis 分布式锁的正确实现:从 SETNX 到 Redisson 看门狗

一、错误示范:先 setnx 再 expire 二、正确姿势:原子命令 为什么必须校验 value:防止 A 线程超时后,B 获得锁,A 恢复后误删 B 的锁。 三、锁续期(Watch Dog) 业务执行时间超过锁超时时间的解决方案: 四、直接使用 Redisson Redisson 帮我们做了: ...
1个月前 阅读 3万 点赞 1003 评论 2

原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)

## 一、为什么不推荐 Executors 阿里开发手册明确禁止使用 `Executors` 创建线程池,原因是: - `newFixedThreadPool` 使用无界队列 `LinkedBlockingQueue`,可能 OOM - `newCachedThreadPool` 最大线程数为 `I...
1个月前 阅读 8 点赞 0 评论 0

原创 Go 并发模式实战:Worker Pool 与 Pipeline 的优雅实现

一、最简 Worker Pool 二、支持优雅退出 三、Pipeline 模式 四、使用 errgroup 管理错误 五、限制并发数 六、常见坑 goroutine 泄漏:channel 没人读也没人写,goroutine 永久阻塞for 循环变量捕获:Go 1.22 前必须 i := i 重新声明...
2个月前 阅读 3958 点赞 171 评论 0

原创 Python asyncio 异步编程实战:从协程到高并发爬虫

一、协程 vs 线程 | 维度 | 线程 | 协程 | | --- | --- | --- | | 切换成本 | 内核态,微秒级 | 用户态,纳秒级 | | 并发数 | 数百 | 数万 | | 数据共享 | 需加锁 | 单线程无需锁 | | 适用场景 | 混合任务 | 纯 IO 密集 | 二、最简示...
3个月前 阅读 3.9万 点赞 2319 评论 0