月度归档:2026年10月 (59)

连载中 18/21

协作三件套:CountDownLatch、CyclicBarrier、Semaphore

锁解决「不能同时干」,三件套解决「什么时候一起干」。CDL 等事件(一次性)、Barrier 等同伴(可循环)、Semaphore 管配额(可增减),全是 AQS 共享模式的三个分身。

#Java#CountDownLatch#CyclicBarrier#Semaphore#JUC
2026-10-31 · 32 阅读 · 0 评论 · 0 赞
连载中 17/21

并发容器补全:CopyOnWriteArrayList 与 BlockingQueue 家族

写时复制的读多写少神器,代价是内存翻倍与弱一致;BlockingQueue 家族的锁粒度差异与三组 API——put/take 阻塞、offer/poll 让路、add/remove 炸雷,生产者消费者的现代标准答案。

#Java#CopyOnWriteArrayList#BlockingQueue#并发容器#JUC
2026-10-31 · 29 阅读 · 0 评论 · 0 赞
连载中 16/21

ConcurrentHashMap:从分段锁到 CAS + synchronized

HashMap 并发用的两个血案现场;JDK 7 分段锁 16 段的笨拙与聪明;JDK 8 把锁做到单个桶——CAS 空桶加 synchronized 锁头节点,size 统计用的是 LongAdder 思想。

#Java#ConcurrentHashMap#分段锁#红黑树#JUC
2026-10-30 · 33 阅读 · 0 评论 · 0 赞
连载中 15/21

线程池(下):参数怎么定、拒绝策略选哪个、怎么动态调

四种拒绝策略各有哲学:宁可吵着失败,不要安静地丢。公式给起点、压测给终点;参数外置加运行时 setter 实现动态线程池;shutdown 与 shutdownNow 的温和与粗暴。

#Java#线程池#拒绝策略#动态调参#JUC
2026-10-30 · 27 阅读 · 0 评论 · 0 赞
连载中 14/21

线程池(上):七大参数与一个任务的完整旅程

为什么大厂规范禁止 Executors?无界队列与无界线程数两个 OOM 现场复盘。手动 new 的七大参数逐个点名,任务旅程的判定顺序——队列先于非核心线程,很多人记反。

#Java#线程池#ThreadPoolExecutor#JUC#并发编程
2026-10-29 · 24 阅读 · 0 评论 · 0 赞
连载中 13/21

ThreadLocal:每个线程的抽屉,与那桩著名的内存泄漏

SimpleDateFormat 并发错乱引出线程私有数据:数据存在 Thread 身上的 map,ThreadLocal 只是钥匙。弱引用 key 与强引用 value 的组合拳,以及线程池下的串台事故。

#Java#ThreadLocal#内存泄漏#JUC#并发编程
2026-10-29 · 36 阅读 · 0 评论 · 0 赞
连载中 12/21

读写锁:读多写少的专属答案,与 StampedLock 乐观读

写写互斥、读写互斥、读读共享;锁降级为什么允许、读升级写为什么被禁止。读多写极少场景的终极方案 StampedLock:乐观读先读后校验,近乎无锁。

#Java#读写锁#StampedLock#AQS#JUC
2026-10-28 · 37 阅读 · 0 评论 · 0 赞
连载中 11/21

ReentrantLock:比 synchronized 多出来的四样东西

可中断、可超时、可公平、多条件队列——四个能力一次讲透,用 Condition 改造生产者消费者告别 notify 误伤。选型观:默认 synchronized,四样都不缺才换锁。

#Java#ReentrantLock#Condition#JUC#并发编程
2026-10-28 · 31 阅读 · 0 评论 · 0 赞
连载中 10/21

AQS(下):共享模式与一次完整源码走读

tryAcquireShared 负数排队、非负通行的传播唤醒;以 ReentrantLock 非公平锁的 lock() 为例完整走读——公平与非公平的全部差异,就是要不要先看队列。

#Java#AQS#ReentrantLock#源码#JUC
2026-10-27 · 37 阅读 · 0 评论 · 0 赞