java线程池
来源:互联网 发布:linux搜索所有文件 编辑:程序博客网 时间:2024/06/05 17:12
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");
}
}
}
- Java线程:线程池
- java--线程--线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(五):线程池
- Java线程_07_线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(六):线程池
- getOutputStream() has already been called for this response 错误解决
- Operator运算符重载与Implicit隐式类型转换
- 【转】sql server 获取当前时间
- 避免frame中出现子框架显示父框架 js代码
- 利用 squid 反向代理提高网站性能
- java线程池
- 贵州支教之第四天(11月10日)
- Centos 时间同步
- explicit在C++中的应用
- 图像旋转简述
- SMS实例--发送后**Receiver没有触发问题
- 《Python基础教程》学习笔记之[D1]基础知识
- cc联盟网是中国最佳电子商务托管平台、B2B电子商务平台、电子商务网站
- 计算某一天是星期几