当多个线程要求同时加载同一个类时,会发生什么情况?

Ano*_*nde 7 java concurrency multithreading classloader

在多线程环境中,当多个线程同时引用一个类时,JVM是否最终会多次加载该类?

如果没有,同步如何发生?

孙兴斌*_*孙兴斌 4

该类将被加载一次。参见jls 12.4.2

对于每个类或接口C,都有一个唯一的初始化锁LC。从 C 到 LC 的映射由 Java 虚拟机实现自行决定。初始化C的过程如下:

  1. 同步 C 的初始化锁 LC。这涉及等待,直到当前线程可以获得 LC。

...