采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
前面是给实例上的锁, 也就在堆中的对象上的锁, 而后面的是给静态方法上的锁, 静态方法属于类,应该是可以同时运行的吧?
能同时运行,一个是对象锁一个是类锁,锁不一样
testMethod1 使用对象锁,而 testMethod2 使用类锁(通过 synchronized 修饰静态方法)。由于它们使用了不同类型的锁,它们之间不会互斥。
testMethod1
testMethod2
synchronized
testMethod1 使用 synchronized (lock),这意味着它使用了一个对象锁,即 lock 对象的监视器锁。这个锁只对同一个 lock 对象的其他synchronized (lock) 代码块或方法调用起作用,不影响其他类型的锁。
synchronized (lock)
lock
testMethod2 使用 static synchronized,它使用的是类锁。类锁对该类的所有实例都起作用,因为它是针对类本身的锁。
static synchronized
登录后可查看更多问答,登录/注册
吃透并发编程,高效解决复杂问题,进入优秀工程师行列
256 5
237 3
227 2
266 2
144 2