awaitTermination()的用法
时间: 2024-02-16 18:59:35 浏览: 10
`awaitTermination()`是一个线程池中的方法,用于等待线程池中所有的任务执行完毕。该方法会阻塞当前线程,直到线程池中所有任务都已经执行完毕或者等待超时。该方法的用法如下:
```
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
```
该方法接受两个参数:
- `timeout`:等待超时时间,以指定时间单位计算。
- `unit`:时间单位。
该方法会等待线程池中所有任务执行完毕或者等待超时,如果在等待时间内所有任务都执行完毕,则返回`true`,否则返回`false`。
使用该方法需要注意以下几点:
- 该方法只能在调用`shutdown()`方法之后调用。
- 该方法会一直等待直到所有任务执行完毕或者达到超时时间,因此需要根据实际情况设置合理的超时时间。
- 如果等待时间过长,可能会影响程序的性能,因此需要根据实际情况进行调整。
示例代码:
```java
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 向线程池提交任务
// ...
// 关闭线程池
executorService.shutdown();
// 等待线程池中的所有任务执行完毕或者等待超时
boolean isTerminated = executorService.awaitTermination(30, TimeUnit.SECONDS);
if (isTerminated) {
System.out.println("所有任务都已经执行完毕");
} else {
System.out.println("超时等待,还有任务在执行");
}
```