标签:并发编程
置顶 精华 原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)
一、为什么不推荐 Executors 阿里开发手册明确禁止使用 Executors 创建线程池,原因是: newFixedThreadPool 使用无界队列 LinkedBlockingQueue,可能 OOMnewCachedThreadPool 最大线程数为 Integer.MAX_VALUE,...
原创 Redis 分布式锁的正确实现:从 SETNX 到 Redisson 看门狗
一、错误示范:先 setnx 再 expire 二、正确姿势:原子命令 为什么必须校验 value:防止 A 线程超时后,B 获得锁,A 恢复后误删 B 的锁。 三、锁续期(Watch Dog) 业务执行时间超过锁超时时间的解决方案: 四、直接使用 Redisson Redisson 帮我们做了: ...
原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)
## 一、为什么不推荐 Executors 阿里开发手册明确禁止使用 `Executors` 创建线程池,原因是: - `newFixedThreadPool` 使用无界队列 `LinkedBlockingQueue`,可能 OOM - `newCachedThreadPool` 最大线程数为 `I...
原创 Go 并发模式实战:Worker Pool 与 Pipeline 的优雅实现
一、最简 Worker Pool 二、支持优雅退出 三、Pipeline 模式 四、使用 errgroup 管理错误 五、限制并发数 六、常见坑 goroutine 泄漏:channel 没人读也没人写,goroutine 永久阻塞for 循环变量捕获:Go 1.22 前必须 i := i 重新声明...
原创 Python asyncio 异步编程实战:从协程到高并发爬虫
一、协程 vs 线程 | 维度 | 线程 | 协程 | | --- | --- | --- | | 切换成本 | 内核态,微秒级 | 用户态,纳秒级 | | 并发数 | 数百 | 数万 | | 数据共享 | 需加锁 | 单线程无需锁 | | 适用场景 | 混合任务 | 纯 IO 密集 | 二、最简示...
1共 5 条