JNLPClassLoader死锁与java 1.8更新102

JNLPClassLoader死锁与java 1.8更新102,java,java-8,java-web-start,Java,Java 8,Java Web Start,我最近正在测试最新的java更新(发布于2016-07-19)。标准(自动更新)版本(1.8u101)与我们的webstart应用程序配合得很好。然而,更新102没有 我们的UI不会加载,或者会挂起 一些挖掘(java控制台中的线程堆栈转储)发现了通过JNLPClassloader(webstart类加载器)加载类时的死锁 后来我发现了一些日志中的bug,但它们缺乏细节,而且oracles修复webstart bug的记录(从我的角度来看)充其量也很平淡。 我们已经通过确保某些操作按顺序发生(

我最近正在测试最新的java更新(发布于2016-07-19)。标准(自动更新)版本(1.8u101)与我们的webstart应用程序配合得很好。然而,更新102没有

我们的UI不会加载,或者会挂起

一些挖掘(java控制台中的线程堆栈转储)发现了通过JNLPClassloader(webstart类加载器)加载类时的死锁

后来我发现了一些日志中的bug,但它们缺乏细节,而且oracles修复webstart bug的记录(从我的角度来看)充其量也很平淡。

我们已经通过确保某些操作按顺序发生(但在不同的线程上)来修复一些死锁,但是我们不能确定这会解决所有问题

下面是一些说明死锁的部分线程堆栈转储

"WorkerThread-8" #52 daemon prio=5 os_prio=0 tid=0x0000000054830800 nid=0x858 waiting for monitor entry [0x000000005959b000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    - waiting to lock <0x00000000eac9cbd8> (a com.sun.jnlp.JNLPClassLoader)
    at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    - locked <0x00000000eac0a7b8> (a com.sun.jnlp.JNLPClassLoader)
    at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ...


"AWT-EventQueue-2" #42 prio=6 os_prio=0 tid=0x000000005482b000 nid=0xbdc waiting for monitor entry [0x0000000054458000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
    - waiting to lock <0x00000000eac0a7b8> (a com.sun.jnlp.JNLPClassLoader)
    at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    - locked <0x00000000eac9cbd8> (a com.sun.jnlp.JNLPClassLoader)
    ...
“WorkerThread-8”#52守护进程prio=5 os_prio=0 tid=0x0000000054830800 nid=0x858等待监视器条目[0x000000005959b000]
java.lang.Thread.State:阻塞(在对象监视器上)
位于java.lang.ClassLoader.loadClass(未知源)
-等待锁定(com.sun.jnlp.JNLPClassLoader)
位于com.sun.jnlp.JNLPClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
-锁定(com.sun.jnlp.JNLPClassLoader)
位于com.sun.jnlp.JNLPClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
...
“AWT-EventQueue-2”#42优先级=6 os\U优先级=0 tid=0x000000005482b000 nid=0xbdc等待监视器条目[0x0000000054458000]
java.lang.Thread.State:阻塞(在对象监视器上)
位于com.sun.deploy.security.DeployURLClassPath.getLoader(未知源)
-等待锁定(com.sun.jnlp.JNLPClassLoader)
位于com.sun.deploy.security.DeployURLClassPath.getResource(未知源)
位于java.net.URLClassLoader$1.run(未知源)
位于java.net.URLClassLoader$1.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(未知源)
位于com.sun.jnlp.JNLPClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
-锁定(com.sun.jnlp.JNLPClassLoader)
...
有人对此有什么见解吗?还是解决办法

编辑:修复了自动更新版本号