Java 锁分类
2022-01-19 17:34:45 0 举报
AI智能生成
详细描述java中的锁分类
作者其他创作
大纲/内容
线程是否需要对同步资源进行加锁?
加锁
悲观锁
synchronized
ReadWriteLock
ReentrantLock
ReentrantReadWriteLock
不加锁
乐观锁
CAS机制
版本号机制
Stampedlock
对同步资源加锁失败,线程是否需要阻塞?
阻塞
不阻塞
自旋锁
SpinLock
TicketLock
CLHLock
MCSLock
适应性自旋锁
多线程竞争锁时是否需要排队?
排队
公平锁
FairSync
ReentrantLock(true)
先插队,插队失败再排队
非公平锁
NonFairSync
ReentrantLock(false)
同一线程中多个流程之间是否可以获取同一个锁?
可以
可重入锁
synchronized
ReentrantLock
不可以
不可重入锁
AQS机制
多线程是否可以共享同一个锁?
可以
共享锁
ReadWriteLock
ReentrantReadWriteLock的读锁
不可以
排它锁(独占锁)
synchronized
ReentrantLock
ReentrantReadWriteLock里的写锁
多线程竞争同步资源的细节差异
不对资源加锁,多线程中只有一个可以对资源修改成功,
其他只能重试
其他只能重试
无锁操作
同一线程竞争同步资源时自动获取锁
偏向锁
多线程竞争同步资源时,未获取到同步资源的线程通过自旋等待锁释放
轻量级锁
Lock
多线程竞争同步资源时,未获取到同步资源的线程通过阻塞等待唤醒
重量级锁
synchronized
0 条评论
下一页