Java线程池如何管理单个线程并且阻塞线程等待线程执行完毕
时间: 2023-11-28 10:04:37 浏览: 85
Java判断线程池线程是否执行完毕
Java线程池可以通过以下方式管理单个线程并阻塞线程等待执行完毕:
1. 使用ExecutorService.submit()方法提交一个Callable或Runnable任务,并将其包装在Future对象中。
2. 调用Future.get()方法阻塞当前线程等待任务执行完成,并获得任务执行结果。
3. 在获取任务执行结果之前,当前线程将被阻塞,直到任务执行完成。
4. 如果需要管理单个线程,可以使用Executors.newSingleThreadExecutor()方法创建一个只有一个线程的线程池。
5. 这个线程池会按照提交任务的顺序依次执行任务,并且可以通过shutdown()方法来关闭线程池。
以下是一个使用Java线程池管理单个线程并阻塞线程等待执行完毕的示例:
```
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Callable<String>() {
public String call() throws Exception {
// 执行任务
return "任务执行完成";
}
});
try {
String result = future.get(); // 阻塞当前线程等待任务执行完成,并获得任务执行结果
System.out.println(result);
} catch (InterruptedException e) {
// 处理中断异常
} catch (ExecutionException e) {
// 处理任务执行异常
} finally {
executor.shutdown(); // 关闭线程池
}
```
阅读全文