/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ import org.jikesrvm.scheduler.RVMThread; class TestDeadVPQueue { public static void main(String[] args) throws Exception { TestDeadVPQueueWorker w = null; System.out.println("TestDeadVPQueue"); // load the native code library System.out.println("Attempting to load dynamic library ..."); System.out.println("(the LIBPATH env variable must be set for this directory)"); System.loadLibrary("TestDeadVPQueueWorker"); // create a thread and wait for it to terminate System.out.println(Thread.currentThread().getName() + ": creating worker 1"); TestDeadVPQueueWorker w1 = new TestDeadVPQueueWorker("worker 1"); System.out.println(Thread.currentThread().getName() + ": starting worker 1"); w1.start(); while (w1.state != TestDeadVPQueueWorker.ending) { try {Thread.currentThread().sleep(100); } catch (InterruptedException e) {} } System.out.println(Thread.currentThread().getName() + ": ending worker 1"); try { Thread.currentThread().sleep(100); } catch (InterruptedException e) {} // create a second thread and wait for it to terminate System.out.println(Thread.currentThread().getName() + ": creating worker 2"); TestDeadVPQueueWorker w2 = new TestDeadVPQueueWorker("worker 2"); System.out.println(Thread.currentThread().getName() + ": starting worker 2"); w2.start(); while (w2.state != TestDeadVPQueueWorker.ending) { try {Thread.currentThread().sleep(100); } catch (InterruptedException e) {} } System.out.println(Thread.currentThread().getName() + ": ending worker 2"); try { Thread.currentThread().sleep(100); } catch (InterruptedException e) {} System.out.println("end synchronous test- dump VM state"); RVMThread.dumpVirtualMachine(); System.out.println("start semi asynchronous test- then dump VM state"); // create start and run 9 threads for (int i = 1; i < 10; i++){ String s = " worker " + i; // create a thread and start it System.out.println(Thread.currentThread().getName() + ":creating" +s); w = new TestDeadVPQueueWorker(s); System.out.println(Thread.currentThread().getName() + ":starting" + s); w.start(); // wait a bit before we start the next try {Thread.currentThread().sleep(10); } catch (InterruptedException e) {} } while (w.state != TestDeadVPQueueWorker.ending) { try {Thread.currentThread().sleep(500); } catch (InterruptedException e) {} } System.out.println("main: bye"); RVMThread.dumpVirtualMachine(); } }