线程池判断是否执行完毕
方法一、
使用shutdown方法,该方法会让线程池不在继续接收新的线程,直到没有线程后通过循环判断是否所有线程都执行完毕
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService exec = Executors.newFixedThreadPool(4);
for (int i = 0;
i<10000;
i++) {
exec.execute(() -> System.out.println("aaaaaaaaaaaaaaaaaaaaaa"));
}
exec.shutdown();
while(true){
if(exec.isTerminated()){
System.out.println("所有的子线程都结束了!");
break;
}
Thread.sleep(1000);
}
}
【线程池判断是否执行完毕】方法二、
通过shutdown将线程池不在接收新的线程,然后使用awaitTermination通过返回值true判断线程全部执行完成
public static void main(String[] args) throws ExecutionException, InterruptedException {
for (int i = 0;
i<10000;
i++) {
exec.execute(() -> System.out.println("aaaaaaaaaaaaaaaaaaaaaa"));
}
exec.shutdown();
//请求关闭、发生超时或者当前线程中断,无论哪一个首先发生之后,都将导致阻塞,直到所有任务完成执行。
boolean flag = exec.awaitTermination(1, TimeUnit.MINUTES);
if(flag){
System.out.println("结束了aaaa");
}
}
推荐阅读
- Linux下面如何查看tomcat已经使用多少线程
- 多线程NSOperation
- 欢乐小分队内蒙东北行第六站(第十二天)五大连池印象之(奇特壮观的火山地貌景观)
- C语言解方程的根和判断是否是闰年
- 对今年以来股市的看法及后期判断
- 寻美姬渐不遇
- 墨池寻欢,书海探险(6)(临赵松雪《心经》)
- springboot整合数据库连接池-->druid
- vue中的条件判断详解v-if|vue中的条件判断详解v-if v-else v-else-if v-show
- spring|spring boot中设置异步请求默认使用的线程池