2

当我们同步一些静态方法锁是在 class.class 上获取的,那么 class.class 代表什么,通过谷歌搜索和阅读一些论坛,我知道了它的 java.lang.Class 实例,并且对于内存中的所有类都存在一个与它们关联的 java.lang.Class 的实例。是吗??

除了它提供的所有主要功能在我的常规 Java 应用程序中有用的功能之外,人们可以使用它创建该类的对象并获得对它的锁定?

欢迎任何参考链接。谢谢!!

4

1 回答 1

1

...它的实例,java.lang.Class对于内存中的所有类,都存在一个java.lang.Class与它们相关联的实例。

基本上,是的,尽管我认为每个类加载器只有一个副本,而不是全部。但是因为你通常只有一个类加载器......

Class实例将类作为一个整体表示,与其他类不同,就像类的实例与该类的所有其他实例不同一样。因此,由于静态方法特定于类(就像非静态方法特定于实例一样),所以在调用静态方法时对类实例进行同步是有意义的(如果方法需要同步)。这就是为什么如果您将synchronized关键字应用于整个方法,JLS 所说的会发生这种情况。

于 2012-07-24T14:09:18.980 回答