java线程池

来源:互联网 发布:linux搜索所有文件 编辑:程序博客网 时间:2024/06/05 17:12
package demo1;
public class SimpleThread extends Thread{
private boolean runningFlag;
private String argument;
public boolean isRunning(){
return this.runningFlag;
}
public synchronized void setRunning(boolean flag){
this.runningFlag = flag;

if(flag){
this.notify();
}
}
public void setArgument(String argument){
this.argument = argument;
}

public String getArgument(){
return this.argument;
}
public SimpleThread(int threadNumber){
runningFlag = false;
System.out.println("Thread"+threadNumber+"started.");
}
public synchronized void run(){
while(true){

try {
if(!runningFlag)
this.wait();
else {
System.err.println("processing"+getArgument()+"..done");
sleep(5000);
System.out.println("Thread is sleeping...");
this.setRunning(false);

}
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println("Interrupt");
}
}
}

}


package demo1;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class TestThreadPool {


public static void main(String[] args) {

try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String s;
ThreadPoolManager manager = new ThreadPoolManager(10);
while((s=bufferedReader.readLine())!=null){
manager.process(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


package demo1;


import java.util.Vector;


public class ThreadPoolManager {


private int maxThread;
public Vector vector;
public void setMaxThread(int maxThread){
this.maxThread = maxThread;
}

public ThreadPoolManager(int maxThread) {
super();
this.setMaxThread(maxThread);
System.out.println("Starting thread pool...");
vector = new Vector();
for(int i = 0; i < 10; i++){
SimpleThread sThread = new SimpleThread(i);
vector.add(sThread);
sThread.start();
}
}

public void process(String s){
int i;
for(i = 0; i < vector.size();i++){
SimpleThread currentThread = (SimpleThread)vector.elementAt(i);
if(!currentThread.isRunning()){
System.out.println("Thread"+(i+1)+"is processing:"+s);
currentThread.setArgument(s);
currentThread.setRunning(true);
return;
}
}
if(i == vector.size()){
System.out.println("Pool is full,try int another time");
}
}

}

原创粉丝点击