## 深入理解Java虚拟机 Chapter13

### 线程安全
>当多个线程访问一个对象时，如果不考虑这些线程在执行时环境下的调度和交替执行，也不需要进行额外的同步，或者在调用方进行任何其他的协调操作，调用这个对象的行为都可以获得正确的结果，那么这个对象是线程安全的

1. 不可变
1. 绝对线程安全
1. 相对线程安全
1. 线程兼容
1. 线程对立

### 锁优化
HotSpot虚拟机对象头Mark Word

存储内容 | 标志位 | 状态
-----|---|-----
对象哈希码、对象分代年龄 | 01 | 未锁定
指向锁记录的指针 | 00 | 轻量级锁定
指向重量级锁的指针 | 10 | 膨胀（重量级锁定）
空，不需要记录信息 | 11 | GC标记
偏向线程ID、偏向时间戳、对象分代年龄 | 01 | 可偏向

偏向锁、轻量级锁的状态转化及对象Mark Word的关系

![jvm-lock-mark-word-min-min](https://s0.wailian.download/2019/04/24/jvm-lock-mark-word-min-min.png)