3261N/A * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * @summary Basic unit test of ThreadInfo.getLockName() 0N/A * and ThreadInfo.getLockOwnerName() 0N/A * @author Mandy Chung 0N/A * @build ThreadExecutionSynchronizer 0N/A super(
"LockAThread");
0N/A // stop here for LockBThread to hold objB 0N/A // The state could be anything. The expected state value 0N/A // passed with this method is not verified. 0N/A super(
"LockBThread");
0N/A // signal waiting LockAThread. 0N/A // Signal main thread about to block on objC 0N/A // The state could be anything. The expected state value 0N/A // passed with this method is not verified. 0N/A // Stop here till LockBThread about to blocked 0N/A super(
"WaitingThread");
0N/A // Signal checker thread, about to wait on objC. 0N/A // block until CheckerThread finishes checking 0N/A // signal checker thread that it is about acquire 0N/A // signal checker thread, about to wait on objC 0N/A super(
"CheckerThread");
0N/A // wait until WaitingThread about to wait for objC 0N/A // wait for waiter thread to about to enter 0N/A // synchronized object ready. 0N/A // give chance for waiter thread to get blocked on 0N/A // wait for signal from waiting thread that it is about 0N/A // Test uncontested case 0N/A // The state could be anything. The expected state value 0N/A // passed with this method is not verified. 0N/A // Test deadlock case 0N/A // t1 holds lockA and attempts to lock B 0N/A // t2 holds lockB and attempts to lock C 0N/A // Test Object.wait() case 0N/A // Check with ThreadInfo with no stack trace (i.e. no safepoint) 0N/A // Check with ThreadInfo with stack trace 0N/A // Find the thread who is blocking on lock 0N/A "Expected chain of threads not matched; current count =" +
count);