Future 使用案例
时间: 2024-11-03 15:22:23 浏览: 7
Future 是 Java 中用于异步计算的结果容器,它通常与 Callable 或 Runnable 配合使用,尤其是当需要执行耗时任务并获取结果但不想阻塞主线程的时候。以下是 Future 的一些典型使用场景:
1. **后台任务处理**:当你创建一个新的线程或使用 ExecutorService 执行一个任务(如网络请求、文件读取等),可以将任务封装到 Future 对象里,然后主线程继续执行其他操作,不会等待任务完成。
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Callable<String>() {
@Override
public String call() throws Exception {
// 耗时任务
return "Task result";
}
});
// 主线程继续执行其他工作...
```
2. **检查任务状态和结果**:你可以通过 get() 方法阻塞地获取 Future 的结果,如果任务尚未完成,get() 会阻塞直到任务结束。也可以使用 isDone() 和 get(long timeout) 来检查任务是否已完成或超时。
3. **处理异常**:如果在异步任务中抛出了异常,Future 提供了 checkedException 或者是 ExecutionException,这允许你在主线程中捕获并处理这些错误。
4. **批量处理**:如果你有多个 Future 对象,可以将它们放入 List<Future>,然后遍历这个列表检查每个 Future 是否已完成,再依次获取结果。
阅读全文