刚才发的怎么404了???大家好:    我在编写一个使用多线程的程序。
     
    介绍一下功能:
    //有一个工作类:MailClient.java
    public MailClient implements Runnable {
           
         private void getNewMails()
         {
             //里面是一些简单的逻辑。
         }         public void run() {
               getNewMails();
         }
    }    接下来创建线程池来调用工作类
    方法一:使用ExecutorService
    简单些一下main
    main(){
         ExecutorService executorService = Executors.newCachedThreadPool();
    
         executorService.execute(new MailClient());
    }
    结果:main函数结束,整个就结束。
    然后方法一改进如下:增加
    executorService.shutdown();
    while (!executorService.isTerminated()) {}    结果:仍无法获得运行结果。
    方法二:
        自己编译一个线程池,针对每个线程判断一下状态:
        while (mailT.isAlive()) {
        }
        能得到预期结果。    求助,怎么使用JDK提供的线程池,让所有线程池中所有线程结束后再停止?????

解决方案 »

  1.   

    结贴:    呵呵自己是最大的原因。    给大家分享一下。    方法一应该改写为:
        
        while(!isTerminated()){
        }
      

  2.   

    先把main挂起,等子线程都执行完了再执行main
      

  3.   

    自己大意了,在调试的时候我是按照executerService.shutdown();
    while(executorService.isTerminated())       //注意:没有取非
    {
    }但是发帖时候我是按照正确的方式发的:<
    刚才又调试了一下。
    其实第一种方式是可以运行的。
    while(!executorService.isTerminated())