java锁详解(通俗易懂)

前言: 用极致的具体化压垮你的竞争对手 !

  • 一.乐观锁
    • 1.volatile
      • 1.1 可见性 总线嗅探
      • 1.2 有序性 禁止指令重拍 内存屏障
  • 二. 悲观锁
    • 1. 锁的状态 无锁 偏向锁 轻量级锁 重量级锁
      • 1.1 无锁 CAS+volatile
      • 1.2 偏向锁 对象头 锁标记 偏向锁标记 偏向线程ID
      • 1.3 轻量级锁 自旋锁 自适应自旋锁
      • 1.4 重量级锁 线程阻塞锁等待cpu
    • 2. 公平锁 线程ID排队
    • 2.1 非公平锁 线程ID排队,新来的线程会先尝试插队
    • 2.2 可重入锁 又名递归锁
    • 2.3 非可重入锁 可能导致死锁
    • 2.4 读写锁 state 高位写,低位读 提高了并发度

一.乐观锁

CAS+volatile

1.volatile

1.1 可见性 总线嗅探

1.2 有序性 禁止指令重拍 内存屏障

二. 悲观锁

1. 锁的状态 无锁 偏向锁 轻量级锁 重量级锁

1.1 无锁 CAS+volatile

1.2 偏向锁 对象头 锁标记 偏向锁标记 偏向线程ID

1.3 轻量级锁 自旋锁 自适应自旋锁

1.4 重量级锁 线程阻塞锁等待cpu

2. 公平锁 线程ID排队

2.1 非公平锁 线程ID排队,新来的线程会先尝试插队

2.2 可重入锁 又名递归锁

2.3 非可重入锁 可能导致死锁

2.4 读写锁 state 高位写,低位读 提高了并发度

你可能感兴趣的:(java,后端,性能优化,极限编程)