同步之间的区别

时间:2017-07-28 12:11:55

标签: java object synchronization

thisExample.this是同一个对象吗?

E.g。 this内的Example.classsynchronized来电是同一个对象吗?

class Example {
    public Example() {
        synchronized(this) {
            // some code
        }
    }
}


class Example {
    public Example() {
        synchronized(Example.class) {
            // some code
        }
    }
}

4 个答案:

答案 0 :(得分:3)

不,this使用当前对象作为监视器,但Example.class使用Example.class作为监视器。

答案 1 :(得分:1)

不,thisExample的实例,而Example.classClass的实例。

答案 2 :(得分:1)

没有

this上的同步是实例级锁定,这意味着无法使用同一对象重新输入关键部分。

Example.class上的同步是类级别锁定,这意味着该类的其他任何实例(包括this)都无法进入该关键部分。

正如您所看到的, class-level 锁定在某种意义上更加激烈。

答案 3 :(得分:0)

这将同步对锁定类的访问,而不是对此/当前对象的访问。使用您认为更容易和更有效的任何一种。