多线程锁
2021-06-23 11:19:18 0 举报
多线程锁的总结
作者其他创作
大纲/内容
Semaphore
增加版本号
LOCK指令
对对象对象头中的markword进行修改
CountDownLatch
synchronized锁升级
synchronized
缓存一致性
维护一个队列:双向链表
ABA
同步方法
常用锁实现
自旋锁
共享锁
禁止指令重排序
AtomicInteger
一个线程占锁,另一个自旋10次升级重量锁,OS调度分配
CAS
monitorenter、monitorexit这里可能有两个monitorexit,为了防止发生异常后使用
可重入锁
重量锁
volatile
可见性
LockSupport
无锁
1个线程,对象markwork中,记录线程的id
synchronized锁的实现
线程挣用,升级自旋(循环)
flag标记ACC_SYNCHRONIZED进入方法前+1,方法结束后-1
自旋锁占用cpu资源,用户空间消耗重量级锁占用内核资源,OS消耗建议:1、执行时间长,线程数多,用系统锁。2、执行时间短(加锁代码),线程数少,用自旋锁。
有序性
偏向锁
独占锁
ReentrantLock
AQS
ReentrantReadWriteLock读锁是共享锁 (效率高)写锁是独占锁锁降级:写锁可降级为读锁
(MESI)硬件级别的协议。保证了两个cpu写入的内容一样
volatile+CAS
同步代码块
0 条评论
下一页