下面一直在while (true) 里面循环跑,DownFilingThread 也是一个多线程,我跟踪进去了 即使 DownFilingThread  跑完了,groupRaw.activeCount() 还是在在跑,怎么判断一下线程是否结束,线程里面套线程
public void downPending(String beginDate, String endDate)
throws DownLoadException {
ThreadGroup groupRaw = new ThreadGroup("threadRaw");
ThreadGroup groupStd = new ThreadGroup("threadRaw"); Thread threadRaw = new Thread(groupRaw, new DownFilingThread(beginDate,
endDate, "raw"));
threadRaw.start(); while (true) {
if (groupRaw.activeCount() == 0) {
break;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} System.out.println("okokokokokokokokokokokokokokokokok");
}

解决方案 »

  1.   

    activeCount()是不精确的,它的返回变化会很大,只是某一时刻的快照,主要是用来为enumerate(ThreadGroup[])估计目标数组大小的
      

  2.   

    “线程组的价值可以引用Joshua Bloch的话来概括:‘最好把线程组看成是一次不成功的尝试,你只要忽略它就好了。’” ——《Thinking in java》第十三章
      

  3.   

    判断线程是否还在可以使用isAlive()
    不太明白LZ的具体需求
    感觉while (true)可以改为while(flag)
    flag用volatile声明,在你说的那个线程结束之前把flag置为false
    或者使用BooleanLock完成同样的事情