Path: blob/master/test/jdk/java/nio/channels/TestThread.java
41152 views
/*1* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/* Utility class for test threads24*25*/2627import java.io.*;282930public abstract class TestThread31extends Thread32{33Exception failure = null;34String name;35protected final PrintStream log;36Thread main;3738TestThread(String name, PrintStream log) {39super("TestThread-" + name);40this.name = name;41this.log = log;42this.main = Thread.currentThread();43setDaemon(true);44}4546TestThread(String name) {47this(name, System.err);48}4950abstract void go() throws Exception;5152public void run() {53try {54go();55} catch (Exception x) {56failure = x;57main.interrupt();58}59}6061int finish(long timeout) {62try {63join(timeout);64} catch (InterruptedException x) { }65if (isAlive() && (failure == null))66failure = new Exception(name + ": Timed out");67if (failure != null) {68failure.printStackTrace(log);69return 0;70}71return 1;72}7374void finishAndThrow(long timeout) throws Exception {75try {76join(timeout);77} catch (InterruptedException x) { }78if (failure != null)79failure = new Exception(name + " threw an exception",80failure);81if (isAlive() && (failure == null))82failure = new Exception(name + " timed out");83if (failure != null)84throw failure;85}8687public String toString() {88return name;89}9091}929394