请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

可以同时运行的吧?

前面是给实例上的锁, 也就在堆中的对象上的锁, 而后面的是给静态方法上的锁, 静态方法属于类,应该是可以同时运行的吧?

正在回答 回答被采纳积分+3

2回答

java小书童 2023-10-28 11:09:37

能同时运行,一个是对象锁一个是类锁,锁不一样

1 回复 有任何疑惑可以回复我~
Alfred_li 2023-10-28 16:44:18

testMethod1 使用对象锁,而 testMethod2 使用类锁(通过 synchronized 修饰静态方法)。由于它们使用了不同类型的锁,它们之间不会互斥。

testMethod1 使用 synchronized (lock),这意味着它使用了一个对象锁,即 lock 对象的监视器锁。这个锁只对同一个 lock 对象的其他synchronized (lock) 代码块或方法调用起作用,不影响其他类型的锁。

testMethod2 使用 static synchronized,它使用的是类锁。类锁对该类的所有实例都起作用,因为它是针对类本身的锁。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信