java 主线程等待线程池任务执行完成再往下执行 代码示例
时间: 2023-10-27 10:20:02 浏览: 137
可以使用`Thread.join()`方法来等待线程池任务执行完成。下面是一个示例代码:
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
for(int i=0; i<10; i++){
// submit tasks to executor
executor.submit(new Task());
}
executor.shutdown();
try {
// wait for all tasks to complete
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
// code after all tasks are completed
System.out.println("All tasks completed!");
```
其中,`Task`是一个实现了`Runnable`接口的任务类,代表线程池中的任务。`executor.shutdown()`表示禁止提交新任务给线程池,将线程池状态设置为`SHUTDOWN`。`executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS)`表示等待线程池中的所有任务执行完成,超时时间设为`Long.MAX_VALUE`,即无限等待。最后,当所有任务执行完成后,就可以执行后续的代码了。
阅读全文