Java 类和接口的初始化

Java 类和接口的初始化,java,Java,我读过之后 2.如果C的类对象指示其他线程正在进行C的初始化,则释放LC并阻止当前线程,直到通知正在进行的初始化已完成,此时重复此步骤 当前线程真的需要释放由其他线程获取的LC吗?这个行动安全吗?在一个应用程序中,类或接口的初始化会发生多少次?谢谢。JVM的约定是,在允许任何应用程序线程使用该类之前,该类已完成加载。“已完成加载”表示所有静态初始值设定项已完成(即所有静态块已执行,静态字段按编码顺序初始化) 类是在第一次使用时加载的,因此中出现的任何线程(隐式)都会调用类加载器来加载类,并在类加

我读过之后

2.如果C的类对象指示其他线程正在进行C的初始化,则释放LC并阻止当前线程,直到通知正在进行的初始化已完成,此时重复此步骤


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

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

类是在第一次使用时加载的,因此中出现的任何线程(隐式)都会调用类加载器来加载类,并在类加载器完成加载类时阻塞(如上所述)。在加载该类时使用该类的任何其他线程也将阻止等待该类完成加载

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



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

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

类是在第一次使用时加载的,因此中出现的任何线程(隐式)都会调用类加载器来加载类,并在类加载器完成加载类时阻塞(如上所述)。在加载该类时使用该类的任何其他线程也将阻止等待该类完成加载

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


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