Java锁详解 带demo 持续更新
1.定义
公平锁&非公平锁 (线程对锁的争夺是否按请求资源的时间顺序排序)
独占锁&共享锁(线程获取资源后是否允许其他线程读取/修改)
互斥锁&读写锁(独占锁&共享锁的具体体现)
乐观锁&悲观锁(乐观情况下认为多读少写,悲观情况下认为存在大量的冲突)
可重入锁(递归锁)
自旋锁(重复请求资源,减少线程挂起(自适应自旋))
锁升级(无锁,偏向锁,轻量级锁,重量级锁)
分段锁(通过分解锁的粒度,减少冲突)
锁优化(代码层面/编译器层面)
2.直接上例子
synchronized
最早接触synchronized是在单例模式下的双重校验锁,synchronized是怎么样的一个关键字呢,它负责的职责又是什么呢
- 1.synchronized 是悲观锁
- 2.synchronized 是独占锁(互斥锁)
- 3.synchronized 是非公平锁
- 4.synchronized 是可重入锁(递归锁)
几个性质
- 1.原子性
- 2.可见性
- 3.有序性
几个用法
- synchronized 锁对象
- synchronized 锁类(.class)
- synchronized 锁方法
- synchronized 锁代码块(this)
- synchronized 锁静态方法