synchronized
2021-10-27 14:14:10 14 举报
AI智能生成
synchronized
作者其他创作
大纲/内容
锁升级[Jdk1.6]
对象内存布局
对象头结构
Mark Word
Klass Point
Monitor
EntryList(阻塞队列【BLOCKED】)
Owner(指向持有Monitor对象的线程)
WaitSet(等待队列【WAITING】)
实例数据
对其填充
代码块
monitorenter
monitorexit
膨胀过程
特性保证
线程通信
JMM
锁的内存语义
有序性
as-if-serial
happens-before
可见性
内存强制刷新
原子性
单一线程持有
可重入性
计数器
Object
wait
程序计数器
notify
和Lock的区别
- synchronized是关键字,是JVM层面的底层啥都帮我们做了,而Lock是一个接口,是JDK层面的有丰富的API
- synchronized会自动释放锁,而Lock必须手动释放锁。
- synchronized是不可中断的,Lock可以中断也可以不中断。
- synchronized能锁住方法和代码块,而Lock只能锁住代码块。
- synchronized是非公平锁,ReentrantLock可以控制是否是公平锁。
- Lock可以知道线程有没有拿到锁,而synchronized不能。
0 条评论
下一页