reusablethreadtest.java

来自「JGRoups源码」· Java 代码 · 共 141 行

JAVA
141
字号
// $Id: ReusableThreadTest.java,v 1.6 2005/01/16 01:04:34 belaban Exp $package org.jgroups.tests;import junit.framework.TestCase;import org.jgroups.util.ReusableThread;import org.jgroups.util.Util;public class ReusableThreadTest extends TestCase {    public ReusableThreadTest(String name) {        super(name);    }    static class MyThread implements Runnable {        int num=0;        String name=null;        public MyThread(int num) {            this.num=num;            this.name="Thread #" + num;        }        public void run() {            System.out.println("Thread " + name + " is run");            long sleep_time=(long)(Math.random() * 5000);            System.out.print("Thread #" + num + ": sleeping " + sleep_time + ':');            Util.sleep(sleep_time);            //throw new Error("hello world");            System.out.println(" -- done");        }    }    static class LongRunningThread extends MyThread {        long sleep_time=10000;        public LongRunningThread(int num) {            super(num);            name="LongRunningThread #" + num;        }        public LongRunningThread(int num, long sleep_time) {            super(num);            this.sleep_time=sleep_time;            name="LongRunningThread #" + num;        }        public void run() {            System.out.println("LongRunningThread " + name + " is run");            System.out.println("LongRunningThread #" + num + ": sleeping " + sleep_time + " msecs");            Util.sleep(sleep_time);        }    }    public void testReusableThread() {        ReusableThread t=new ReusableThread("Demo ReusableThread");        MyThread m1=new MyThread(1);        MyThread m2=new MyThread(2);        LongRunningThread m4=new LongRunningThread(4);        System.out.println("Assigning task");        t.assignTask(m4);        System.out.println("Sleeping 2 secs");        Util.sleep(2000);        System.out.println("stop()");        t.stop();        System.out.println("stop() -- done");        Util.printThreads();        System.out.println("\nAssigning task 1");        t.assignTask(m1);        t.waitUntilDone();  // passive wait        System.out.println("done with task 1");        Util.printThreads();        System.out.println("\nAssigning task 2");        t.assignTask(m2);        t.waitUntilDone();        System.out.println("done with task 2");        System.out.println("Stopping thread");        t.stop();        System.out.println("done");        Util.printThreads();    }    public void testAssignMultipleTimes() {        ReusableThread t=new ReusableThread("Demo ReusableThread");        LongRunningThread t1, t2;        t1=new LongRunningThread(1, 500);        t2=new LongRunningThread(2, 300);        t.start();        t.assignTask(t1);        t.waitUntilDone();        assertTrue(t.done());        t.assignTask(t2);        t.waitUntilDone();        assertTrue(t.done());    }    public void testStop() {        ReusableThread t=new ReusableThread("Demo ReusableThread");        LongRunningThread t1;        t1=new LongRunningThread(1, 20000);        t.assignTask(t1);        Util.sleep(1000);        t.stop();        t.waitUntilDone();        assertTrue(t.done());        assertFalse(t.isAlive());    }    public static void main(String[] args) {        String[] testCaseName={ReusableThreadTest.class.getName()};        junit.textui.TestRunner.main(testCaseName);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?