java - Class对象A是在JVM加载A类时创建的,还是我调用A.class时创建的?

标签 java class jvm synchronize

据我所知,每个类都有一个 Class 对象。我使用synchronize时有一种情况,例如:

public class A {
    public static void main(String... args){
        synchronize(A.class){
            //do something...
        }
    }
}

这将锁定 AClass 对象,对吗?这个 Class 对象是什么时候创建的?它是在 JVM 加载 A 类时创建的还是在我调用 A.class 时创建的?我在 JLS 中找不到详细信息,有人可以提供相关链接吗?

最佳答案

this will lock A's Class object, right?

是的。

my question is when this Class object is created? is it created at JVM load A class or when i call A.class?

当 ClassLoader 加载它时,它返回一个 Class 对象。

i can't find detail in JLS, could someone please provide the link about it, thanks.

我建议阅读 ClassLoader.loadClass() 的 javadoc

关于java - Class对象A是在JVM加载A类时创建的,还是我调用A.class时创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819927/

相关文章:

java - 将表示小时的小数格式化为 HH :mm

java - 如何确保我的 N1QL 查询考虑最近的更改?

css - 将自定义类添加到 WordPress 导航中的 anchor 标记

compiler-construction - 面向 JVM 而不是 x86 的缺点是什么?

javascript - 使用模拟器时 react native firebase 崩溃

java - 返回静态、递归 Java 方法不起作用

php - 从 javascript OOP 背景理解 php 类结构(如何调整代码工作流程)

php - 公共(public)静态变量值

web-applications - Websphere 类加载

在 JVM 中记录/重放执行代码的 Java 解决方案