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 + -
显示快捷键?