锁的分类

  • 乐观锁/悲观锁
  • 独占锁/共享锁
  • 可重入锁
  • 偏向锁/轻量级锁/重量级锁
  • 互斥锁/读写锁
  • 公平锁/非公平锁
  • 分段锁
  • 自旋锁

    锁的升级

    偏向锁->无锁(自旋锁,轻量级锁)->重量级锁
    当一个线程访问某个未被访问的资源时,会给这个资源加一个偏向锁,说明是偏向于这个线程的
    当另外很多的线程过来竞争访问这个资源时,所有的线程都会通过CAS进行抢占这把锁,此时就升级为了自旋锁。
    当自旋的次数大于10,或者等待的线程超过了CPU核数的一半,就升级为重量级锁,向操作系统申请锁。

image.png