Java锁详解 带demo 持续更新 2022-04-25

Java锁详解 带demo 持续更新

1.定义

  1. 公平锁&非公平锁 (线程对锁的争夺是否按请求资源的时间顺序排序)

  2. 独占锁&共享锁(线程获取资源后是否允许其他线程读取/修改)

  3. 互斥锁&读写锁(独占锁&共享锁的具体体现)

  4. 乐观锁&悲观锁(乐观情况下认为多读少写,悲观情况下认为存在大量的冲突)

  5. 可重入锁(递归锁)

  6. 自旋锁(重复请求资源,减少线程挂起(自适应自旋))

  7. 锁升级(无锁,偏向锁,轻量级锁,重量级锁)

  8. 分段锁(通过分解锁的粒度,减少冲突)

  9. 锁优化(代码层面/编译器层面)

2.直接上例子

synchronized

最早接触synchronized是在单例模式下的双重校验锁,synchronized是怎么样的一个关键字呢,它负责的职责又是什么呢

  • 1.synchronized 是悲观锁
  • 2.synchronized 是独占锁(互斥锁)
  • 3.synchronized 是非公平锁
  • 4.synchronized 是可重入锁(递归锁)

几个性质

  • 1.原子性
  • 2.可见性
  • 3.有序性

几个用法

  • synchronized 锁对象
  • synchronized 锁类(.class)
  • synchronized 锁方法
  • synchronized 锁代码块(this)
  • synchronized 锁静态方法

3.demo代码

GitHub - desfate/LockExample

你可能感兴趣的:(Java锁详解 带demo 持续更新 2022-04-25)