2017-07-28 118 views
0

thisExample.this是同一个对象吗?同步之间的区别

E.g.和Example.class里面的​​是同一个对象吗?

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


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

显然不是。第一个是一个对象,第二个是整个班级。 – Tom

+0

'Example.class'是示例类。 'this'是'Example'的特定实例。不一样。 – khelwood

+0

不,他们是不一样的。 'this'返回当前实例,而'Example.class'返回'Example'类的实例。 – Lino

回答

2

没有,this使用当前对象作为显示器,但Example.class使用Example.class作为显示器。

1

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

0

这将同步访问锁定的类而不是this/current对象。使用你认为更容易和更有效的方法。

1

同步上this实例级锁定,这意味着该临界区不能与同一个对象重新输入。

同步上Example.class类级别锁定,这意味着类的没有其他实例,包括this,可以输入一个关键部分。

正如你所看到的,级锁从某种意义上说,锁定更为激烈。