搜索结果: "Java" (23)

连载中 12/21

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

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

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

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

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

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

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

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

#Java#AQS#ReentrantLock#源码#JUC
2026-10-27 · 38 阅读 · 0 评论 · 0 赞
连载中 9/21

AQS(上):一个双向队列,管住天下所有的锁

ReentrantLock、Semaphore、CountDownLatch 源码里全是同一个内核。AQS 三件套:volatile state、双向等待队列、独占与共享——排队调度是天下的公理,判定规则是各家的私法。

#Java#AQS#JUC#并发编程#ReentrantLock
2026-10-27 · 39 阅读 · 0 评论 · 0 赞
连载中 8/21

原子类全家桶:从 AtomicInteger 到 LongAdder 的分摊艺术

atomic 包五大家族一次认全;AtomicLong 高并发下被 CAS 失败重试拖垮的真相,以及 LongAdder 用 base 加 Cell 数组分摊热点的绝地翻盘——代价是弱一致。

#Java#原子类#LongAdder#LongAccumulator#JUC
2026-10-26 · 45 阅读 · 0 评论 · 0 赞
连载中 7/21

CAS:不加锁也能线程安全,前提是懂它的三个软肋

乐观并发的核心:先改,提交时对暗号。一条 cmpxchg 指令的硬件级原子,AtomicInteger 的 do-while 自旋内核,以及 ABA、自旋空耗、单变量天花板三大软肋。

#Java#CAS#AtomicInteger#ABA#JUC
2026-10-26 · 56 阅读 · 0 评论 · 0 赞
连载中 6/21

volatile(下):指令重排与 happens-before 秩序公约

new 一个对象可被重排成三步中的两步,DCL 单例的半成品对象就是这么来的。happens-before 五规则一次讲清,volatile 的完整语义收官。

#Java#volatile#指令重排#happens-before#DCL#JUC
2026-10-25 · 68 阅读 · 0 评论 · 0 赞
连载中 5/21

volatile(上):线程 A 改了变量,线程 B 为什么看不见

一个 while 死循环牵出并发第二宗罪:L1/L2 各核心私有缓存造成的数据割裂,JMM 的主内存/工作内存抽象,以及 volatile 那两条硬性规则——和它治不了的原子性。

#Java#volatile#可见性#JMM#JUC
2026-10-25 · 68 阅读 · 0 评论 · 0 赞
连载中 4/21

synchronized(下):锁升级之路与 wait/notify 两条铁律

无锁、偏向、轻量级、重量级的自动升级链(含 JDK 15 废弃偏向锁的真相);wait 必须在 synchronized 里、等待条件必须写 while——两条铁律背后的道理。

#Java#synchronized#锁升级#wait-notify#JUC
2026-10-24 · 82 阅读 · 0 评论 · 0 赞