Код: Выделить всё
override fun loadClass(name: String, resolve: Boolean): Class {
try {
return super.loadClass(name, resolve)
} catch (_: ClassNotFoundException) { }
return pluginClassLoaderManager.loadClass(name, this)
}
override fun loadClassNoParent(name: String): Class {
val lock = getClassLoadingLock(name)
synchronized(lock) {
return findLoadedClass(name) ?: findClass(name)
}
}
Код: Выделить всё
"DefaultDispatcher-worker-3@2727" tid=0x24 nid=NA waiting for monitor entry
java.lang.Thread.State: BLOCKED
Blocked by DefaultDispatcher-worker-2@2726
Waiting for DefaultDispatcher-worker-2@2726 to release lock (x.PluginUrlClassLoader)
at x.PluginUrlClassLoader.loadClassNoParent(PluginUrlClassLoader.kt:82)
at x.PluginClassLoaderManager.loadClass(PluginClassLoaderManager.kt:73)
at x.PluginUrlClassLoader.loadClass(PluginUrlClassLoader.kt:76)
at java.lang.ClassLoader.loadClass(ClassLoader.java:526)
"DefaultDispatcher-worker-2@2726" tid=0x23 nid=NA waiting for monitor entry
java.lang.Thread.State: BLOCKED
Blocked by DefaultDispatcher-worker-3@2727
Waiting for DefaultDispatcher-worker-3@2727 to release lock (x.PluginUrlClassLoader)
at x.PluginUrlClassLoader.loadClassNoParent(PluginUrlClassLoader.kt:82)
at xr.PluginClassLoaderManager.loadClass(PluginClassLoaderManager.kt:73)
at x.PluginUrlClassLoader.loadClass(PluginUrlClassLoader.kt:76)
at java.lang.ClassLoader.loadClass(ClassLoader.java:526)
< /code>
Две потоки ждут друг друга, чтобы выпустить замки, но я не могу выяснить, при каких обстоятельствах возникнет этот конфликт. По логике, как только поток получает блокировку Подробнее здесь: https://stackoverflow.com/questions/795 ... en-threads