< prev index next >

test/java/lang/ClassLoader/deadlock/DelegateTest.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 19,32 **** * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ import java.net.MalformedURLException; import java.net.URL; ! public class Starter implements Runnable { private String id; private DelegatingLoader dl; private String startClass; --- 19,43 ---- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ + /* + * @test + * @bug 4735126 + * @summary (cl) ClassLoader.loadClass locks all instances in chain when delegating + * @modules java.base/java.lang:open + * @build Alice Bob SupAlice SupBob + * @run driver SetupLoader + * @run main/othervm -Xlog:class+load DelegateTest one-way + * @run main/othervm -Xlog:class+load DelegateTest cross + */ + import java.net.MalformedURLException; import java.net.URL; ! public class DelegateTest implements Runnable { private String id; private DelegatingLoader dl; private String startClass;
*** 34,48 **** public static void log(String line) { System.out.println(line); } ! public static void main(String[] args) { URL[] urlsa = new URL[1]; URL[] urlsb = new URL[1]; try { ! String testDir = System.getProperty("test.classes", "."); String sep = System.getProperty("file.separator"); urlsa[0] = new URL("file://" + testDir + sep + "SA" + sep); urlsb[0] = new URL("file://" + testDir + sep + "SB" + sep); } catch (MalformedURLException e) { e.printStackTrace(); --- 45,59 ---- public static void log(String line) { System.out.println(line); } ! public static void main(String[] args) throws Exception { URL[] urlsa = new URL[1]; URL[] urlsb = new URL[1]; try { ! String testDir = System.getProperty("user.dir", "."); String sep = System.getProperty("file.separator"); urlsa[0] = new URL("file://" + testDir + sep + "SA" + sep); urlsb[0] = new URL("file://" + testDir + sep + "SB" + sep); } catch (MalformedURLException e) { e.printStackTrace();
*** 67,81 **** } else { System.out.println("ERROR: unsupported - " + testType); } } ! private static void test(String clsForSA, String clsForSB) { ! Starter ia = new Starter("SA", saLoader, clsForSA); ! Starter ib = new Starter("SB", sbLoader, clsForSB); ! new Thread(ia).start(); ! new Thread(ib).start(); } public static void sleep() { try { Thread.sleep(500); --- 78,96 ---- } else { System.out.println("ERROR: unsupported - " + testType); } } ! private static void test(String clsForSA, String clsForSB) throws InterruptedException { ! DelegateTest ia = new DelegateTest("SA", saLoader, clsForSA); ! DelegateTest ib = new DelegateTest("SB", sbLoader, clsForSB); ! Thread ta = new Thread(ia); ! Thread tb = new Thread(ib); ! ta.start(); ! tb.start(); ! ta.join(); ! tb.join(); } public static void sleep() { try { Thread.sleep(500);
*** 83,93 **** e.printStackTrace(); log("Thread interrupted"); } } ! private Starter(String id, DelegatingLoader dl, String startClass) { this.id = id; this.dl = dl; this.startClass = startClass; } --- 98,108 ---- e.printStackTrace(); log("Thread interrupted"); } } ! private DelegateTest(String id, DelegatingLoader dl, String startClass) { this.id = id; this.dl = dl; this.startClass = startClass; }
< prev index next >