synchronized(this) vs synchronized(MyClass.class) synchronized(this) 和 synchronized(MyClass.class) 的区别

17 浏览
0 Comments

synchronized(this) vs synchronized(MyClass.class) synchronized(this) 和 synchronized(MyClass.class) 的区别

可能是重复的:

Java中的.synchronized块

我正在阅读一个关于同步的文章。我对以下几点感到困惑,需要更多的解释:

  1. 对于同步块,

    synchronized (this) {
        // 代码
    }
    

    synchronized (MyClass.class) {
        // 代码
    }
    

    有何不同?

  2. 同步实例方法意味着线程必须获得实例的独占锁,而同步静态方法意味着线程必须获得整个类的锁(如果我理解错了,请纠正)。所以,如果一个类有三个方法,其中一个是静态同步方法,那么如果一个线程获得了该方法的锁,这意味着它将获得整个类的锁。那么其他两个方法是否也会被锁定,而其他方法将无法访问这两个方法,因为整个类都被锁定了?

0