我正在编写我的自定义类加载器,并且想知道我是否应该使其成为线程安全的? 您可以很容易地看到,并非所有本机Java类加载器都是线程安全的,只有sun.misc.Launcher.AppClassLoader可以(但是,我已经检查过OpenJDK源,而在OpenJDK中则没有)。
有没有原因java类加载器不同步? 自定义类加载器应该是线程安全的吗?
答案 0 :(得分:2)
ClassLoader.loadClass()
已同步。
通常,自定义类加载器不会覆盖此方法,但它可能会覆盖findClass()
。由于findClass()
由loadClass
调用,因此从同步的关键部分调用,因此它本身不需要同步。