package myTest_EA; import java.util. * ; public class ThreadPool extends Thread ... { /** *//** * @param args */ //pool是作业数 private List pool; public ThreadPool(List pool) ...{ this.pool = pool ; } public void run() ...{ for(int i = 0; i < 3; i++) ...{ synchronized(pool) ...{ while(pool.isEmpty()) ...{ try ...{ System.out.println( " thread name:" + this.getName() + " pool.wait()"); pool.wait(); } catch(InterruptedException ex) ...{ } } pool.remove(pool.size() - 1); System.out.println(" pool.size()" + pool.size() + " thread name:" + this.getName()); } } } public final static int THREAD_COUNT = 5; public static void main(String[] args) ...{ // TODO Auto-generated method stub Vector pool = new Vector(); ThreadPool[] threadPool = new ThreadPool[THREAD_COUNT]; System.out.println("a"); System.out.println(threadPool.length); for(int i = 0; i < threadPool.length; i++) ...{ threadPool[i] = new ThreadPool(pool); threadPool[i].start(); } System.out.println("b"); for(int i = 0; i < 10; i++) ...{ synchronized(pool) ...{ System.out.println(" " + i + " " ); pool.add(0,"bbbbbbbbbb"); /**//*pool.add(1,"ccc"); pool.add(2,"dd"); pool.add(3,"e"); pool.add(4,"ee");*/ //pool.add(5,"f"); pool.notifyAll(); System.out.println("pool.size:" + pool.size() ); System.out.println("threadPool:" + threadPool.length ); } } /**//*for(int i = 0; i < threadPool.length; i++) { threadPool[i].interrupt(); }*/ } } 当程序中还有线程处于wait()状态时,程序不会自动退出(未完待续,代码会帖上改进后的)