//SimpleThread.java
public class SimpleThread extends Thread{
private boolean runningFlag;
private String argument;
private int threadNumber;
public boolean isRunning(){
return runningFlag;
}
public synchronized void setRunning(boolean flag){
runningFlag = flag;
if(flag){
this.notify();//唤醒在此对象监视器上等待的单个线程。
}
}
public String getArgument() {
return argument;
}
public void setArgument(String argument) {
this.argument = argument;
}
public SimpleThread(int threadNumber){
this.threadNumber=threadNumber;
runningFlag = false;
System.out.println("当前启动的是线程"+threadNumber);
}
public synchronized void run(){
try{while(true){
if(!runningFlag){
this.wait();
}else{
System.out.println("正在处理您输入的../"" + getArgument() +"/"...已经处理完毕");
sleep(5000);
System.out.println("--线程号为"+this.getThreadNumber()+"休眠5秒钟--");
setRunning(false);
System.out.println("线程号为**"+this.getThreadNumber()+"**休眠结束");
}
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public int getThreadNumber() {
return threadNumber;
}
public void setThreadNumber(int threadNumber) {
this.threadNumber = threadNumber;
}
}
-------------------
//
import java.util.*;
public class ThreadPoolManager {
private int maxThread;
public Vector vector;
public void setMaxThread(int threadCount){
maxThread=threadCount;
}
public ThreadPoolManager(int threadCount){
setMaxThread(threadCount);
System.out.println("....启动线程池.....");
vector =new Vector();
for(int i=1;i<=10;i++){
SimpleThread thread =new SimpleThread(i);
vector.addElement(thread);
thread.start();
}
}
public void process(String argument){
int i;
for(i=0;i<vector.size();i++){
SimpleThread currentThread = (SimpleThread)vector.elementAt(i);
if(!currentThread.isRunning()){
System.out.println("..当前是第" + (i+1)+"个线程在处理您输入的 /""+ argument+"/"");
currentThread.setArgument(argument);
currentThread.setRunning(true);
return;
}
}
if(i == vector.size()){
System.out.println("线程池的线程都在使用,没有多余的线程,请选择其他时间..");
}
}
}
----------------------
public class TextThreadPool {
public static void main(String args[]){
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s;
ThreadPoolManager manager=new ThreadPoolManager(10);
while((s=br.readLine())!=null){
manager.process(s);
}}catch(IOException e){}
}
}