线程池示例代码

package com.abc.test.thread;

public class SimpleThread extends Thread {

private boolean runningFlag;
private String agrs;

public boolean isRunningFlag() {
return runningFlag;
}

public synchronized void setRunningFlag(boolean runningFlag) {
this.runningFlag = runningFlag;
if (runningFlag) {
this.notify();
}
}

public String getAgrs() {
return agrs;
}

public void setAgrs(String agrs) {
this.agrs = agrs;
}

public SimpleThread(int threadNumber) {
runningFlag = false;
System.out.println("线程" + threadNumber + "启动了......");
}

public synchronized void run() {
try {
while (true) {
if (!runningFlag) {
this.wait();
} else {
System.out.println("处理" + getAgrs() + "......");
Thread.sleep(5000);
System.out.println("线程睡眠了......");
setRunningFlag(false);
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


package com.abc.test.thread;

import java.util.ArrayList;
import java.util.List;

public class ThreadPoolManager {
// 最大线程数
private int maxThread;

@SuppressWarnings("unchecked")
private List list;

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

@SuppressWarnings("unchecked")
public ThreadPoolManager(int maxThread){
this.setMaxThread(maxThread);
System.out.println("线程池启动了......");
list = new ArrayList();
for(int i=0;i<10;i++){
SimpleThread st = new SimpleThread(i);
list.add(st);
st.start();
}
}

public void process(String args){
int i;
for(i=0;i<list.size();i++){
SimpleThread curThread = (SimpleThread)list.get(i);
if(! curThread.isRunningFlag()){
System.out.println("线程"+i+"处理"+args);
curThread.setAgrs(args);
curThread.setRunningFlag(true);
return;
}
}
if(i == list.size()){
System.out.println("线程池已经满了,请等待另一个时间!");
}
}
}


package com.abc.test.thread;

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

public class TestMultThreadPool {
public static void main(String[] args) {
try {
ThreadPoolManager manager = new ThreadPoolManager(10);
System.out.println("请输入字符:");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while ((str = bf.readLine()) != null) {
manager.process(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值