synchronized总结
2021-12-23 15:29:33 2 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
synchronized总结
作者其他创作
大纲/内容
简介
作用范围
对象锁
方法锁
类锁
锁分类
Mark Word
Klass Point
EntryList(阻塞队列【BLOCKED】)
Owner(指向持有Monitor对象的线程)
WaitSet(等待队列【WAITING】)
Monitor
对象头结构
实例数据
对其填充
对象内存布局
膨胀过程
特性保证
锁升级[JDK1.6]
as-if-serial
happens-before
有序性
内存强制刷新
可见性
单一线程持有
原子性
计数器
可重入性
锁的内存语义
JMM
程序计数器
wait
notify
Object
线程通信
synchronized是关键字,是JVM层面的底层啥都帮我们做了,而Lock是一个接口,是JDK层面的有丰富的API
synchronized会自动释放锁,而Lock必须手动释放锁。
synchronized是不可中断的,Lock可以中断也可以不中断。
synchronized能锁住方法和代码块,而Lock只能锁住代码块。
synchronized是非公平锁,ReentrantLock可以控制是否是公平锁。
Lock可以知道线程有没有拿到锁,而synchronized不能。
和Lock的区别
monitorenter
monitorexit
同步代码块
ACC_SYNCHRONIZED
同步方法
底层原理
偏向锁
轻量级锁
重量级锁
无锁状态
对象头Mark word
实例变量class metadata address
填充数据array Length
对象实例
加锁的基础
自旋锁:竞争失败的时候,不是马上转化级别,而是执行几次空循环
JIT在编译的时候把不必要的锁去掉
锁消除
JVM对synchronized的优化[JDK 1.6]
synchronized
0 条评论
回复 删除
下一页