锁
2020-06-08 09:50:57 0 举报
AI智能生成
Java 锁 脑图
作者其他创作
大纲/内容
锁的分类
线程要不要锁住同步资源
锁住
悲观锁
不锁住
乐观锁
多线程能够共享一把锁
可以
共享锁
不可以
独占锁
多线程竞争时,是否排队
排队
公平锁
先尝试插队,插队失败再排队
非公平锁
同一个线程是否可以重复获取同一把锁
可以
可重入锁
不可以
不可重入锁
是否可中断
可以
可中断锁
不可以
非可中断锁
等锁的过程
自旋
自旋锁
阻塞
非自旋锁
乐观锁和悲观锁
悲观锁
乐观锁
实现
版本号方式
CAS
乐观锁的缺点
ABA问题
循环时间开销大
只能保证一个共享变量的原子操作
公平锁和非公平锁
公平锁
优势
劣势
非公平锁
为什么要有非公平锁?
特例:tryLock()
优势
劣势
自旋锁和阻塞锁
自旋锁
代码实现
适用场景
阻塞锁
锁优化
自旋锁和自适应
锁消除
锁粗化
偏向锁
偏向锁的工作流程
对象的哈希码怎么处理?
轻量级锁
HotSpot虚拟机对象的内存布局
轻量级锁的工作流程
加锁
解锁
使用条件
线程的中断
isInterrupted()
Thread.interrupted()
重载方法isInterrupted(boolean ClearInterrupted)
interrupt()
Lock接口
简介、地位和作用
为什么需要Lock
方法
lock()
tryLock()
tryLock(long time, TimeUnit unit)
lockInterruptibly()
unlock()
可见性保证
ReentrantLock和synchronized到底锁定什么了?
可重入锁和非可重入锁
避免死锁
提高封装性
共享锁和排它锁/独占锁
共享锁/读写锁
读写锁的作用
读写锁的规则
ReadWriteLock
WriteLock
ReadLock
读锁和写锁的交互方式
选择规则
读线程插队
升降级
为什么要升降级?
支持锁的降级,不支持锁的升级
排它锁/独占锁
synchronized
ReentrantLock
可中断锁
锁池和等待池
锁池
等待池
0 条评论
下一页