import java.util.Date;
import java.util.Vector;
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SnmpThreadPool {
private int threadNumber;
private Vector<Thread> runningVector = new Vector<Thread>();
private LinkedBlockingQueue<Thread> waitingQueue = new LinkedBlockingQueue<Thread>();
private final int SLEEP = 100;
private int number = 0;
private Log log = LogFactory.getLog(SnmpThreadPool.class);
private Date startDateTest;
private Date endDateTest;
boolean isStart = false;
boolean isEnd = false;
public SnmpThreadPool(int threadNumber){
log.debug("运行EbuSnmpThreadPool构造方法");
this.threadNumber = threadNumber;
Thread thread = new Thread(new ThreadCheck());
thread.setName("ThreadCheck Thread");
thread.start();
}
public synchronized void execute(Thread thread){
waitingQueue.add(thread);
}
class ThreadCheck implements Runnable{
private Log threadCheckLog = LogFactory.getLog(ThreadCheck.class);
@Override
public void run() {
threadCheckLog.debug("运行ThreadCheck run方法");
while(true){
try {
Thread.sleep(SLEEP);
if(runningVector.size() > 0){
for(int i = 0 ; i < runningVector.size() ; i++){
Thread current = runningVector.get(i);
if(!current.isAlive()){
runningVector.remove(i);
}
}
}
number = threadNumber - runningVector.size();
if(number>0){
for(int i = 0 ; i < number ;i++){
if(waitingQueue.size()>0){
Thread newThread = waitingQueue.poll();
runningVector.add(newThread);
newThread.start();
isStart = true;
if(startDateTest==null){
startDateTest = new Date();
log.debug("开始时间 : " + startDateTest);
}
}
}
}
if(isStart&&runningVector.size()==0&&waitingQueue.size()==0){
endDateTest = new Date();
long time = endDateTest.getTime() - startDateTest.getTime() ;
log.debug("结束时间 : " + endDateTest);
log.debug("运行时长为 : time = " + time);
// break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
写的一个简单的java线程池
最新推荐文章于 2021-12-03 10:35:24 发布