第13章 线程安全与锁优化

13.1 概述

13.2 线程安全

13.2.1 Java语言中的线程安全
将Java语言中各种操作共享的数据分为以下5类:
1.不可变
final关键字修饰。
2. 绝对线程安全

  1. 相对线程安全

  2. 线程兼容

  3. 线程对立

13.2.2 线程安全的实现方法

  1. 互斥同步
    同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个线程使用。
    最基本的互斥同步手段就是synchronized关键字。

  2. 非阻塞同步
    基于冲突检测的乐观并发策略,就是先进行操作,如果没有其他线程争用共享数据,那操作就成果了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施。这种乐观的并发策略的许多实现都不需要把线程挂起,称为非阻塞同步。
    需要”硬件指令集的发展“。

  3. 无同步方案
    1)可重入代码:都是线程安全的
    2) 线程本地存储:ThreadLocal

13.3 锁优化

13.3.1 自旋锁与自适应自旋

13.3.2 锁消除

13.3.3 锁粗化

13.3.4 轻量级锁

13.3.5 偏向锁

13.4 本章小结

(有空再重读咯)

猜你喜欢

转载自blog.csdn.net/u010819416/article/details/80641428