タイムアウトは1秒後に発生するはずですが、そういうことは起こっていません。ExecutorServiceのタイムアウトが期待通りに機能していません
public class Worker implements Runnable {
int workerId;
public Worker(int workerId) {
super();
this.workerId = workerId;
}
public void run() {
System.out.println(workerId+"Worker Started ....");
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(workerId+"Worker finishes.....");
}
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class TestExecutor {
public static void main(String[] args) {
ExecutorService executorService=Executors.newCachedThreadPool();
for(int i=0;i<=2;i++){
executorService.submit(new Worker(i));
}
executorService.shutdown();
try {
executorService.awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
System.out.println("Timeout Happen .....");
}
}
}
代わりに何が起こっていますか? – Nikem
'executorService.awaitTermination(1、TimeUnit.SECONDS);で何が起こると思いますか?このコードは、あなたが期待した通りに動作するはずだと考えるドキュメンテーションの部分はどれですか? – Pshemo