gpt4 book ai didi

java - 类和接口(interface)的初始化

转载 作者:行者123 更新时间:2023-11-30 07:24:21 25 4
gpt4 key购买 nike

读完JLS section 12.4.2 .

2.If the Class object for C indicates that initialization is in progress for C by some other thread, then release LC and block the current thread until informed that the in-progress initialization has completed, at which time repeat this step.

当前线程真的需要释放其他线程获取的LC吗?这个 Action 安全吗?一个应用程序中会发生多少次类或接口(interface)的初始化?谢谢。

最佳答案

JVM 的约定是类在任何应用程序线程被允许使用该类之前完成加载。 “完成加载”表示所有静态初始化器都已完成(即所有静态 block 已执行,静态字段已按编码顺序初始化)

类在第一次使用时被加载,所以任何线程(隐式地)调用 ClassLoader 来加载类,并在 ClassLoader 完成类加载时阻塞(如上所述)。加载类时碰巧使用该类的任何其他线程也将阻塞等待类完成加载。

类在每次 JVM 启动时加载一次。


学究们注意:是的,可以使用 ClassLoader 功夫来重新加载一个类,但是这个解释并没有误导。

关于java - 类和接口(interface)的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com