大家好:    我在编写一个使用多线程的程序。
     
    介绍一下功能:
    //有一个工作类: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.   

    在你的工作线程上调一下join()
    例如:
    Thread workThread=new Thread(runnable);
    workThread.join();
    workThread.start();
    有任何问题,请联系我
      

  2.   

    据我所知现在的java线程好像停止不了吧,
    你用线程池可以自己定义拿线程和关闭线程的方法。MyThread{
        run(){
           
          while(running){
    ....
    }}}拿线程 就是在map里边取线程,设置running = true。
    关闭线程 就把线程放到map,设置running = false。