我正在编写我的自定义类加载器,想知道是否应该使其成为线程安全的吗?
如您所见,并非所有 native Java类加载器都是线程安全的,只有sun.misc.Launcher.AppClassLoader才是线程安全的(但是,我已经检查了OpenJDK的源代码,而在OpenJDK中则不是)。
java类加载器不同步是有原因的吗?
自定义类加载器是否应该是线程安全的?
最佳答案
ClassLoader.loadClass()
已同步。
通常,自定义类加载器不会覆盖此方法,但可能会覆盖findClass()
。由于findClass()
是由loadClass
调用的,因此是从同步的关键部分调用的,因此它本身不需要同步。