from:《Java多线程编程实战指南(核心篇)》
特点 | 锁 | volatile | CAS | final | static |
---|---|---|---|---|---|
原子性保障 | 具备 | 具备2 | 具备 | 不涉及 | 不涉及 |
可见性保障 | 具备 | 具备 | 不具备 | 不具备 | 具备3 |
有序性保障 | 具备 | 具备 | 不涉及 | 具备 | 具备4 |
上下文切换 | 可能 | 不会 | 不会 | 不会 | 可能5 |
备注 | 1、被争用的锁可能导致上下文切换 | 2、仅能够保障对volatile变量读/写操作本身的原子性 | 34、仅在一个线程初始读取一个类的静态变量是起作用 5、静态变量所属类的初始化可能导致上下文切换 |