synchronized(this) vs synchronized(MyClass.class) synchronized(this) 和 synchronized(MyClass.class) 的区别
- 论坛
- synchronized(this) vs synchronized(MyClass.class) synchronized(this) 和 synchronized(MyClass.class) 的区别
17 浏览
synchronized(this) vs synchronized(MyClass.class) synchronized(this) 和 synchronized(MyClass.class) 的区别
可能是重复的:
我正在阅读一个关于同步的文章。我对以下几点感到困惑,需要更多的解释:
- 对于同步块,
synchronized (this) { // 代码 }
与
synchronized (MyClass.class) { // 代码 }
有何不同?
- 同步实例方法意味着线程必须获得实例的独占锁,而同步静态方法意味着线程必须获得整个类的锁(如果我理解错了,请纠正)。所以,如果一个类有三个方法,其中一个是静态同步方法,那么如果一个线程获得了该方法的锁,这意味着它将获得整个类的锁。那么其他两个方法是否也会被锁定,而其他方法将无法访问这两个方法,因为整个类都被锁定了?