sync(this)vs syncize(MyClass.class)
问题内容:
我正在阅读有关同步的文章。我对以下几点感到困惑,需要进一步说明
1)用于同步块。怎么样
synchronize(this){
// code
}
不同于
synchronize(MyClass.class){
//code
}
2)同步实例方法意味着线程将必须获得实例的排他锁,而同步静态方法意味着线程将必须获得整个类的锁(如果我错了,请纠正我)。因此,如果一个类具有三个方法,并且其中一个是静态同步的,则如果线程获取该方法的锁,则意味着它将获取整个类的锁。那么这是否意味着其他两个方法也将被锁定,并且当整个类都处于锁定状态时,其他方法将无法访问这两个方法?
问题答案:
MyClass.class
并且this
是不同的事物,它们是对不同对象的不同引用。
this
-是对该类特定实例的引用,并且
MyClass.class
-是对MyClass
描述对象的引用。
这些同步块中,第一同步将与具体处理的所有线程不同 这个 实例MyClass
,而第二个将同步 所有 线程独立哪个对象的在其上调用的方法。