aboutsummaryrefslogtreecommitdiffstats
path: root/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java
diff options
context:
space:
mode:
authorAndrew Azores <[email protected]>2013-10-16 13:13:19 -0400
committerAndrew Azores <[email protected]>2013-10-16 13:13:19 -0400
commita8d0fefc52c821169e1c9d7be41cdeb75456dd64 (patch)
tree584807bb03aa371bc3dd0d71e804cb4a77c5b70a /tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java
parent76667d1d971e9fc9ac9840d64a38e7a06a6cfabb (diff)
Resolve multiple-applet deadlock issue in JNLPClassLoader
New lock used for synchronizing JNLPClassLoader#loadClass(String) to avoid deadlock condition when multiple applets are being loaded simultaneously. Regression test included. * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (loadClassLock) private member for locking of loadClass method. (loadClass) synchronizes using new lock rather than instance intrinsic lock to avoid RH976833 deadlock * tests/reproducers/custom/JNLPClassLoaderDeadlock/testcases/JNLPClassLoaderDeadlockTest.java: new test for multiple applet deadlock condition * tests/reproducers/custom/JNLPClassLoaderDeadlock/resources/JNLPClassLoaderDeadlock.html: same * tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java: same * tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_2.java: same * tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/Makefile: same
Diffstat (limited to 'tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java')
-rw-r--r--tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java b/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java
new file mode 100644
index 0000000..616e5d3
--- /dev/null
+++ b/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java
@@ -0,0 +1,24 @@
+import java.applet.Applet;
+import java.awt.*;
+
+public class JNLPClassLoaderDeadlock_1 extends Applet {
+
+ @Override
+ public void init() {
+ System.out.println("JNLPClassLoaderDeadlock_1 applet initialized");
+ final String version = System.getProperty("java.version") + " (" + System.getProperty("java.vm.version") + ")";
+ final String vendor = System.getProperty("java.vendor");
+ final TextField tf = new TextField(40);
+ tf.setText(version + " -- " + vendor);
+ tf.setEditable(false);
+ tf.setBackground(Color.white);
+ setBackground(Color.white);
+ add(tf);
+ System.out.println("JNLPClassLoaderDeadlock_1 applet finished");
+ System.out.println("*** APPLET FINISHED ***");
+ }
+
+ public static void main(String[] args) {
+ new JNLPClassLoaderDeadlock_1().init();
+ }
+}