スレッドプールは実行済みかどうかを判断する
1220 ワード
メソッド1.shutdownメソッドを使用すると、スレッドプールが新しいスレッドを受信し続けないようにし、スレッドがない後、すべてのスレッドが実行されたかどうかをループで判断するまで
方法2.shutdownによってスレッドプールが新しいスレッドを受信していない場合、awaitTerminationを使用して戻り値trueによってスレッドのすべての実行が完了したと判断する
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);
}
}
方法2.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");
}
}