之间有什么区别

ExecutorService eService = Executors.newFixedThreadPool(2);
eService.execute(new TestThread6());
eService.execute(new TestThread6());
eService.execute(new TestThread6());
eService.awaitTermination(1, TimeUnit.NANOSECONDS);
eService.shutdown();


eService.shutdown();
eService.awaitTermination(1, TimeUnit.NANOSECONDS);

我不太了解shutdown()。此方法不等待先前提交的任务完成执行。这是否意味着shutdown()可以终止已提交但尚未完成的任务?我尝试了一些例子,他们没有证明,请给我一个例子。

最佳答案

您应该先调用shutdown。否则,您可能会等待很长时间,因为awaitTermination实际上并没有关闭您的执行程序。

如果要等待任务完成而不是等待执行程序关闭,则应使用invokeAll

10-06 14:17