package com.jpexs.proxy;
import java.util.*;
public class ThreadPool implements Cleanable {
private String name;
private Vector pool = new Vector();
public ThreadPool(String name) {
this.name = name;
}
public synchronized ReusableThread get() {
ReusableThread rt = null;
if (pool.size() > 0) {
rt = (ReusableThread) pool.firstElement();
pool.removeElement(rt);
}
if (rt == null) {
rt = new ReusableThread(this);
rt.start();
}
return rt;
}
public synchronized void put(ReusableThread rt) {
pool.addElement(rt);
}
public synchronized void clean() {
long now = System.currentTimeMillis();
for (Enumeration e = pool.elements(); e.hasMoreElements();) {
ReusableThread rt = (ReusableThread) e.nextElement();
if (now - rt.getLastRunTime() >= 30000) {
rt.terminate();
pool.removeElement(rt);
}
}
}
}