import java.util.Vector;
public class ThreadPool implements Runnable{
public final static int DEFAULT_MINIMUM_SIZE=0;
public final static int DEFAULT_MAXIMUM_SIZE=Integer.MAX_VALUE;
public final static int DEFAULT_RELEASE_RELAY=10*1000;
protected int minimumsize;
protected int maximumsize;
protected int currentsize;
protected int availablethread;
protected long releasedelay;
protected  Vector tasklist;
public ThreadPool(int minsize,int maxsize,long delay)
{
minimumsize=minsize;
maximumsize=maxsize;
releasedelay=delay;
tasklist=new Vector(100);
availablethread=0;
}
public ThreadPool()
{
this(DEFAULT_MINIMUM_SIZE,DEFAULT_MAXIMUM_SIZE,DEFAULT_RELEASE_RELAY);
}
public synchronized int getminimumsize(){
return minimumsize;
}
public synchronized void setminimumsize(int minsize)
{
minimumsize=minsize;
}
public synchronized int getmaximumsize(){
return maximumsize;
}
public synchronized void setmaximumsize(int maxsize)
{
minimumsize=maxsize;
}
public synchronized void setreleasedelay(long delay)
{
releasedelay=delay;
}
public synchronized long getreleasedelay()
{
return  releasedelay;
}
public synchronized void addTask(Runnable runnable)
{
tasklist.addElement(runnable);
if(availablethread>0)
{
this.notify();
}
else{
if(currentsize<maximumsize){
Thread t=new Thread(this);
currentsize++;
t.start();
}
}
}
public void run()
{
Runnable task;
while(true)
{
 synchronized (this){
  if(currentsize>maximumsize)
  {
  currentsize--;
  break;
  }
  task=getnexttask();
  if(task==null)
  {
  try{
  availablethread++;
  wait(releasedelay);
  availablethread--;
 
  }catch(InterruptedException ie){};
 task=getnexttask();
 if(task==null){
  if(currentsize<=maximumsize)
  {
  continue;
  }
  currentsize--;
  break;
 }
  }
 }
 try{
  task.run();
 
 }catch(Exception e){
  System.out.println("Uncaught exception!");
  e.printStackTrace(System.err);
 
 }
}
}
protected synchronized Runnable getnexttask()
{
Runnable task=null;
if(tasklist.size()>0)
{
task=(Runnable)(tasklist.elementAt(0));
tasklist.removeElementAt(0);
}
return task;
}
public static void main(String args[])
{
ThreadPool tp=new ThreadPool(5,10,500);
        System.out.println(tp.availablethread);
 


Runnable mytask=new Runnable(){
public void run(){
System.out.println("New Thread!");
}
};
tp.addTask(mytask);
Thread tt=new Thread(mytask);
tt.stop();
}
    }1. 运行后的CMD模式下的线程怎么停不下来?(即没有 press any key continue....),stop好象没用
2.  System.out.println(tp.availablethread);怎么显示为0 ,不是还有5个可用线程吗
3. 在main方法中我定义两个task,mytask1和mytask2, 如何实现交替执行?