ExecutorService Future 异步 实例
时间: 2023-07-27 14:08:37 浏览: 112
异步调用实例
以下是一个使用 ExecutorService 和 Future 实现异步操作的示例:
```java
import java.util.concurrent.*;
public class AsyncExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// 模拟一个耗时的计算任务,返回计算结果
Thread.sleep(3000);
return 42;
}
});
System.out.println("异步任务已提交");
// 可以在这里做一些其他的事情
try {
// 获取异步任务的结果,如果异步任务还没有完成,会阻塞当前线程
Integer result = future.get();
System.out.println("异步任务的结果为:" + result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();
}
}
```
该示例创建了一个单线程的 ExecutorService,并提交了一个 Callable 对象表示的异步任务,该任务模拟了一个耗时的计算操作,最终返回计算结果。然后示例继续执行其他的代码,最后调用 Future 的 get 方法获取异步任务的结果,如果异步任务还没有完成,会阻塞当前线程。最后,示例关闭了 ExecutorService。
阅读全文