view tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java @ 762:29c1c1f92e09

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
author Andrew Azores <aazores@redhat.com>
date Thu, 17 Oct 2013 11:09:51 -0400
parents
children
line wrap: on
line source

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();
    }
}