13.1 概述
13.2 线程安全
13.2.1 Java语言中的线程安全
将Java语言中各种操作共享的数据分为以下5类:
1.不可变
final关键字修饰。
2. 绝对线程安全
相对线程安全
线程兼容
线程对立
13.2.2 线程安全的实现方法
互斥同步
同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个线程使用。
最基本的互斥同步手段就是synchronized关键字。非阻塞同步
基于冲突检测的乐观并发策略,就是先进行操作,如果没有其他线程争用共享数据,那操作就成果了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施。这种乐观的并发策略的许多实现都不需要把线程挂起,称为非阻塞同步。
需要”硬件指令集的发展“。无同步方案
1)可重入代码:都是线程安全的
2) 线程本地存储:ThreadLocal
13.3 锁优化
13.3.1 自旋锁与自适应自旋
13.3.2 锁消除
13.3.3 锁粗化
13.3.4 轻量级锁
13.3.5 偏向锁
13.4 本章小结
(有空再重读咯)