Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/runtime/7107135/TestMT.java
32284 views
/*1* Copyright (c) 2002-2013, Oracle and/or its affiliates. All rights reserved.2* Copyright (c) 2011 SAP AG. All Rights Reserved.3* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.4*5* This code is free software; you can redistribute it and/or modify it6* under the terms of the GNU General Public License version 2 only, as7* published by the Free Software Foundation.8*9* This code is distributed in the hope that it will be useful, but WITHOUT10* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or11* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License12* version 2 for more details (a copy is included in the LICENSE file that13* accompanied this code).14*15* You should have received a copy of the GNU General Public License version16* 2 along with this work; if not, write to the Free Software Foundation,17* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.18*19* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA20* or visit www.oracle.com if you need additional information or have any21* questions.22*/2324class TestMT {2526static boolean loadLib(String libName) {27try {28System.loadLibrary(libName);29System.out.println("Loaded library "+ libName + ".");30return true;31} catch (SecurityException e) {32System.out.println("loadLibrary(\"" + libName + "\") throws: " + e + "\n");33} catch (UnsatisfiedLinkError e) {34System.out.println("loadLibrary(\"" + libName + "\") throws: " + e + "\n");35}36return false;37}3839public static int counter = 1;40static int Runner() {41counter = counter * -1;42int i = counter;43if (counter < 2) counter += Runner();44return i;45}4647public static int run(String msg) {48try {49Runner();50} catch (StackOverflowError e) {51System.out.println(msg + " caught stack overflow error.");52return 0;53} catch (OutOfMemoryError e) {54return 0;55}56return 2;57}5859public static void main(String argv[]) {60try {61for (int i = 0; i < 20; i++) {62Thread t = new DoStackOverflow("SpawnedThread " + i);63t.start();64}65run("Main thread");66loadLib("test-rwx");67run("Main thread");68} catch (Exception e) {69System.out.println(e);70}71}7273static class DoStackOverflow extends Thread {74public DoStackOverflow(String name) {75super(name);76}77public void run() {78for (int i = 0; i < 10; ++i) {79TestMT.run(getName());80yield();81}82}83}84}858687