采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
同一对象执行带有synchronized的方法或代码块,一定时先执行完一个方法或者代码块再执行另一个,不会交替执行,这是为什么?
你好,这里的锁都是全局锁,全局锁只有谁拿到锁谁才可以执行,执行完才释放锁,这时其他线程才可能抢到锁去执行。这个例子还有一点是,拿到一个锁后会执行一个for循环,执行10次普通的顺序log输出,这个执行是不会被打断的,因为全局锁在这个过程中是没释放的。
那为什么两个不同的对象example1和example2的时候就会交替执行呢?按道理不也是一个线程拿到锁以后先执行完一个完整的for循环,之后另外一个线程再拿到锁执行一个完整的for循环
是不是因为,对于两个相同的对象,对于这个对象一次有且只能有一个线程占用执行,而由于是全局锁,所以对一个for循环,相当于是在跑单线程。而两个不同对象就可以有两个同等地位的全局锁,两个线程各自跑自己的,所以会交替执行?望老师解答
哦,我好像看了JVM的知识知道是为什么了,一个obj只能对应一个monitor,谢谢老师
或者说,不可中断锁,在不同对象调用同一个带锁方法的时候,为什么会交替执行
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.1k 15
3.5k 12
1.2k 12