2_synchronized
2021-11-01 11:05:36 8 举报
AI智能生成
synchronized
作者其他创作
大纲/内容
用法
修饰对象分类
同步方法
同步非静态方法
同步静态方法
同步代码块
获取锁分类
获取对象锁
获取类锁
monitor
每一个对象都有一个monitor
过程
1.当线程要占有资源,先检查monitor是否等于0,
0没有被占用,这时候线程占有资源,并且对这个monitor+1。
如果不为零表示被占用。当线程释放,monitor减1
0没有被占用,这时候线程占有资源,并且对这个monitor+1。
如果不为零表示被占用。当线程释放,monitor减1
同一个线程可以对同一个对象进行多次加锁
注意事项
与模拟题而关联的对象不能为空
synchronized作用域太大
不同的monitor企图锁相同的方法
多个锁交叉导致死锁
概念
互斥性
可见性
原理分析
线程堆栈分析(互斥)
JVM指令分析
不同版本
JVM对synchronized的优化
偏向锁
轻量级锁
重量级锁
对象实例
对象头Mark word
无锁状态
偏向锁
轻量级锁
重量级锁
实例变量class metadata address
填充数据array Length
自旋锁:竞争失败的时候,不是马上转化级别,而是执行几次空循环
锁消除
JIT在编译的时候把不必要的锁去掉
0 条评论
下一页