关于同一对象执行加synchronized方法或代码块顺序问题

来源:3-3 线程安全性-原子性-synchronized

d_chocolate

2019-05-28

同一对象执行带有synchronized的方法或代码块,一定时先执行完一个方法或者代码块再执行另一个,不会交替执行,这是为什么?
图片描述图片描述

写回答

2回答

Jimin

2019-05-31

你好,这里的锁都是全局锁,全局锁只有谁拿到锁谁才可以执行,执行完才释放锁,这时其他线程才可能抢到锁去执行。这个例子还有一点是,拿到一个锁后会执行一个for循环,执行10次普通的顺序log输出,这个执行是不会被打断的,因为全局锁在这个过程中是没释放的。

0
3
湿地车手
哦,我好像看了JVM的知识知道是为什么了,一个obj只能对应一个monitor,谢谢老师
2021-05-25
共3条回复

d_chocolate

提问者

2019-05-29

或者说,不可中断锁,在不同对象调用同一个带锁方法的时候,为什么会交替执行

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程