synchronized(this) vs synchronized(MyClass.class)
2022-09-01 11:51:59
可能的重复:
用于.class的 Java 同步块
我正在阅读一篇关于同步的文章。我对以下几点感到困惑,需要更多的澄清
-
对于同步块。如何
synchronized (this) { // code }
不同于
synchronized (MyClass.class) { // code }
-
同步实例方法意味着线程必须在实例上获得独占锁,而同步静态方法意味着线程必须在整个类上获取锁(如果我错了,请纠正我)。因此,如果一个类有三个方法,其中一个是静态同步的,那么如果一个线程在该方法上获取锁,则意味着它将在整个类上获取锁。那么这是否意味着另外两个也被锁定,并且没有其他方法能够访问这两个方法,因为整个类都有锁定?