Tech
[Java] happens-before 详解
Java 并发核心:为什么需要 happens-before ?
很多人在学习 Java 并发的时候,会直接开始背诵知识点:
volatile 保证可见性
synchronized 保证线程安全
Lock 可以手动加锁
happens-before 存在八条规则
但绝大多数人都没有弄懂底层根源问题:
为什么会诞生 happens-before 这套机制?
为什么恰好是这八条规则,而非十条、二十条?
happens-before 从本质上解决了计算机并发中的什么痛点?
本文站在设计者视角,逐层拆解 Java 内存模型( JMM )中 happens-before 的设计初衷与底层原理。
一、无性能优化的理想环境:根本不需要 happens-before
假设计算机运行环境满足以下理想化条件:
CPU 严格依照代码书写顺序串行执行指令
不存在 CPU 多级缓存
编译器不会做任何代码优化
全程没有指令重排行为
所有线程直接读写同一份主内存数据
此时多线程交互逻辑十分简单:
线程...
Read the full discussion on V2EX
This article was aggregated from V2EX. Click to join the conversation.
View on V2EX