java怎么判断线程结束 | 您所在的位置:网站首页 › 怎么判断一个线程是否结束 › java怎么判断线程结束 |
1.join() 如果是一个线程,可以使用此方法,多个不合适 2.CountDownLatch 此为并发计数器,每个线程结束后减一(countDown()),countDownLatch.await();//等待所有子线程执行完 3.线程池ThreadPoolExecutor的shutdown与awaitTermination方法 executor.shutdown();//只是不能再提交新任务,等待执行的任务不受影响 try { boolean loop = true; do { //等待所有任务完成 loop = !executor.awaitTermination(2, TimeUnit.SECONDS); //阻塞,直到线程池里所有任务结束 } while(loop); } catch (InterruptedException e) { e.printStackTrace(); } service.shutdown(); while(!service.awaitTermination(2, TimeUnit.SECONDS)){ System.out.println("service not stop"); } //或者isTerminated,如果关闭后所有任务都已完成,则返回 true。注意,除非首先调用 shutdown 或 shutdownNow,否则 isTerminated 永不为 true。 executor.shutdown();//只是不能再提交新任务,等待执行的任务不受影响 while(true){ if(exe.isTerminated()){ System.out.println("所有的子线程都结束了!"); break; } Thread.sleep(1000); } ThreadPoolExecutor.getActiveCount() == 0 ? |
CopyRight 2018-2019 实验室设备网 版权所有 |