您的位置:首页 > 编程语言 > Java开发

[学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容

2008-04-05 00:06 1256 查看
//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){}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: