请稍等 ...
×

采纳答案成功!

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

关于这节课后的作业的思考

图片描述
其实可以同时运行,原因很简单,testMethod1是对象锁,testMethod2是类锁,它们是不同的锁,无法限制线程同时运行。

老师,我的理解对吗?

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

1回答

Alfred_li 2024-03-29 16:49:01

同学你好,你理解的是对的

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

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

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


0 回复 有任何疑惑可以回复我~
  • 黎岸 #1
    是不是可以理解为,无论什么锁的对象是什么,只要看在jvm中是不是同一个或者只存在一份
    回复 有任何疑惑可以回复我~ 2024-05-27 19:13:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信