我正在编写我的自定义类加载器,想知道是否应该使其成为线程安全的吗?
如您所见,并非所有 native Java类加载器都是线程安全的,只有sun.misc.Launcher.AppClassLoader才是线程安全的(但是,我已经检查了OpenJDK的源代码,而在OpenJDK中则不是)。

java类加载器不同步是有原因的吗?
自定义类加载器是否应该是线程安全的?

最佳答案

ClassLoader.loadClass()已同步。

通常,自定义类加载器不会覆盖此方法,但可能会覆盖findClass()。由于findClass()是由loadClass调用的,因此是从同步的关键部分调用的,因此它本身不需要同步。

10-01 01:51