Java中的Future类用于描述一个异步计算的结果,它提供了检查计算是否完成、等待计算完成和获取计算结果的方法。
JAVA Future类的使用详解
什么是Future类?
Java中的Future类用于描述一个异步计算的结果,它提供了检查计算是否完成、等待计算完成和获取计算结果的方法。
Future类的使用方法
创建Future对象
可以使用java.util.concurrent.Executors类中的线程池工厂方法创建一个ExecutorService线程池,然后将Callable或Runnable任务提交给线程池,线程池会返回一个Future类型的对象,表示异步任务的结果。
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> futureResult = executor.submit(() -> {
Thread.sleep(1000);
return "Hello, Future!";
});
获取异步计算结果
可以使用get()方法获取异步计算的结果,如果计算未完成则方法会阻塞,直到计算完成返回结果或者抛出异常。
String result = futureResult.get();
检查计算是否完成
可以使用isDone()方法检查异步计算是否完成,该方法立即返回计算是否完成的布尔值,不会阻塞。
if (futureResult.isDone()) {
String result = futureResult.get();
}
取消异步任务
可以使用cancel()方法取消异步任务,方法接收一个布尔值参数,表示是否中断正在执行的任务,如果任务已经完成或者被取消,则方法将返回false,否则会返回true。
boolean cancelResult = futureResult.cancel(false);
Future类的示例说明
示例1:使用Future获取线程池中所有任务的计算结果
ExecutorService executor = Executors.newFixedThreadPool(2);
List<Future<String>> futureResults = new ArrayList<>();
futureResults.add(executor.submit(() -> "Task1"));
futureResults.add(executor.submit(() -> "Task2"));
futureResults.add(executor.submit(() -> "Task3"));
for (Future<String> futureResult : futureResults) {
String result = futureResult.get();
System.out.println(result);
}
executor.shutdown();
示例2:使用Future取消异步任务
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> futureResult = executor.submit(() -> {
Thread.sleep(10000);
return "Hello, Future!";
});
// 在任务执行5秒钟后取消任务
Thread.sleep(5000);
boolean cancelResult = futureResult.cancel(true);
System.out.println("Cancel Result: " + cancelResult);
executor.shutdown();
以上就是JAVA Future类的使用详解。
编程基础网
本文标题为:JAVA Future类的使用详解
基础教程推荐
猜你喜欢
- Spring MVC全局异常处理和单元测试_动力节点Java学院整理 2024-01-03
- Java必须掌握的 4 大基础 2023-08-11
- 一文弄懂fastjson 2023-07-14
- jsp实现cookie的使用 2023-12-17
- Spring Bean属性注入的两种方式详解 2022-12-27
- java – struts 2中的数据库访问 2023-10-30
- 一句话木马入侵EASYNEWS新闻管理系统 2023-12-06
- java+io+swing实现学生信息管理系统 2023-03-15
- Springboot使用SPI注册bean到spring容器的示例代码 2023-06-10
- java实现简易的学籍管理系统 2022-11-08
