入门,定义一个做倒计时的类,Counter,该类实现了Runnable接口,
package com.woxiaoe.study.thread;
/**
* 倒计时类
* @author 小e
*
* 2010-4-19 下午09:12:02
*/
public class Counter implements Runnable {
private int countNum;
private static int taskCount = 0;//线程id
private final int taskId = taskCount++;
public Counter(int countNum) {
this.countNum = countNum;
}
public String show(){
return "Id[" + taskId + "] countNum:" + countNum + " ";
}
@Override
public void run() {
while(countNum-- > 0){
System.out.print(show());
Thread.yield();
}
}
}
测试代码,通过Thread来调用
package com.woxiaoe.study.thread;
import java.util.Random;
import junit.framework.TestCase;
public class TestCounter extends TestCase {
public void testThread(){
for(int i = 0; i < 5 ; i++){
new Thread(new Counter(10)).start();
}
}
}
通过ExecutorService调用
public void testExecutor(){
ExecutorService exec = Executors.newCachedThreadPool();
for(int i = 0; i < 10 ; i++){
exec.execute(new Counter(10));
}
exec.shutdown();
}
Output:
Id[1] countNum:9 Id[0] countNum:9 Id[3] countNum:9 Id[2] countNum:9 Id[0] countNum:8 Id[1] countNum:8 Id[3] countNum:8 Id[1] countNum:7 Id[4] countNum:9 Id[1] countNum:6 Id[3] countNum:7 Id[3] countNum:6 Id[1] countNum:5 Id[3] countNum:5 Id[1] countNum:4 Id[3] countNum:4 Id[1] countNum:3 Id[3] countNum:3 Id[1] countNum:2 Id[3] countNum:2 Id[1] countNum:1 Id[3] countNum:1 Id[1] countNum:0 Id[3] countNum:0 Id[2] countNum:8 Id[2] countNum:7 Id[2] countNum:6 Id[2] countNum:5 Id[2] countNum:4 Id[2] countNum:3 Id[2] countNum:2 Id[2] countNum:1 Id[2] countNum:0