采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
其实可以同时运行,原因很简单,testMethod1是对象锁,testMethod2是类锁,它们是不同的锁,无法限制线程同时运行。
老师,我的理解对吗?
同学你好,你理解的是对的
testMethod1 使用对象锁,而 testMethod2 使用类锁(通过 synchronized 修饰静态方法)。由于它们使用了不同类型的锁,它们之间不会互斥。
testMethod1 使用 synchronized (lock),这意味着它使用了一个对象锁,即 lock 对象的监视器锁。这个锁只对同一个 lock 对象的其他synchronized (lock) 代码块或方法调用起作用,不影响其他类型的锁。
testMethod2 使用 static synchronized,它使用的是类锁。类锁对该类的所有实例都起作用,因为它是针对类本身的锁。
是不是可以理解为,无论什么锁的对象是什么,只要看在jvm中是不是同一个或者只存在一份
登录后可查看更多问答,登录/注册
吃透并发编程,高效解决复杂问题,进入优秀工程师行列
212 5
201 3
198 2
234 2
120 2