public class ThreadPool extends ThreadGroup {//作为线程组来实现线程池,新颖 private boolean isAlive;//此线程池是否激活
private LinkedList taskQueue;//存放任务的链表
private int threadID;//线程池中的线程数
private static int threadPoolID;//用来记数,实例化了多少个线程池对象 /**
创建一个新的线程池.
@param numThreads 池中的线程数.
*/
public ThreadPool(int numThreads) {
super("ThreadPool-" + (threadPoolID++));
setDaemon(true); isAlive = true; taskQueue = new LinkedList();
for (int i=0; i<numThreads; i++) {
new PooledThread().start();//启动numThreads个线程用于执行存于链表中的任务
}
}
private LinkedList taskQueue;//存放任务的链表
private int threadID;//线程池中的线程数
private static int threadPoolID;//用来记数,实例化了多少个线程池对象 /**
创建一个新的线程池.
@param numThreads 池中的线程数.
*/
public ThreadPool(int numThreads) {
super("ThreadPool-" + (threadPoolID++));
setDaemon(true); isAlive = true; taskQueue = new LinkedList();
for (int i=0; i<numThreads; i++) {
new PooledThread().start();//启动numThreads个线程用于执行存于链表中的任务
}
}
至于要终止线程池中的线程一般是事先已经启动的,终止就没有必要了,除非是为了调整