ExecutorService executor = Executors.newSingleThreadExecutor(); 等待子线程结束 再执行主线程
时间: 2024-06-04 13:03:56 浏览: 149
线程学习.docx
ExecutorService是Java中的一个线程池框架,提供了管理线程池的方法和管理任务的方法。Executors.newSingleThreadExecutor()方法返回一个单线程的线程池,即只有一个线程在执行任务,其他任务将被放到队列中等待执行。在这种情况下,可以通过以下步骤等待子线程结束后再执行主线程:
1. 使用submit()方法将任务提交给executor,并将Future对象保存到列表中。
2. 调用Future对象的get()方法,阻塞主线程等待子线程完成任务。
3. 循环遍历Future对象列表,调用get()方法,确保所有子线程都已完成任务。
4. 所有子线程都已完成任务后,主线程继续执行。
下面是示例代码:
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
List<Future<?>> futures = new ArrayList<>();
futures.add(executor.submit(new MyTask()));
// 等待子线程结束
for (Future<?> future : futures) {
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
// 执行主线程
System.out.println("All tasks completed.");
executor.shutdown();
```
阅读全文