【 FutureTask如何拿到结果的】

FutureTask如何拿到结果的

首先FutureTask是一个具体的类

跟结果有关的属性;

  1. 需要实现的函数式接口
    需要实现的函数式接口

  2. 存储结果的变量在这里插入图片描述

如何拿到结果

FutureTask对run方法有自己的逻辑,会调用我们重写的call方法,在run方法中,会为这个变量赋值
在这里插入图片描述
由于FutureTask实现的是RunnableFuture接口,而RunnableFuture实现了Runnable和Future。
因此:1. FutureTask可作为Runnable的实现传入Thread构造方法中。2. 需要实现callable中的call方法,这个call方法就是我们需要写的逻辑了,需要让这个线程做什么以及需要返回什么结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用FutureTask类来等待异步执行结果。具体步骤如下: 1. 定义一个Callable接口的实现类,用于执行需要获取结果集的操作,并返回结果。 2. 创建一个FutureTask对象,将Callable实现类实例作为参数传递给FutureTask构造函数。 3. 使用Executor框架(例如ThreadPoolExecutor)来执行FutureTask对象,异步执行操作并返回Future对象。 4. 在主线程中,使用Future.get()方法获取异步操作的结果。该方法会阻塞当前线程,直到异步操作完成并返回结果。 下面是一个简单的示例代码: ```java import java.util.concurrent.*; public class FutureTaskExample { public static void main(String[] args) throws Exception { // 创建一个Callable实现类的实例 Callable<Integer> task = new Callable<Integer>() { public Integer call() { // 模拟异步操作 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return 100; } }; // 创建FutureTask对象,将Callable实现类实例作为参数传递给FutureTask构造函数 FutureTask<Integer> futureTask = new FutureTask<Integer>(task); // 创建线程池并执行FutureTask对象 Executor executor = Executors.newSingleThreadExecutor(); executor.execute(futureTask); // 在主线程中,使用Future.get()方法获取异步操作的结果 Integer result = futureTask.get(); System.out.println("异步操作的结果是:" + result); } } ``` 在上面的示例代码中,创建了一个Callable实现类的实例,并将其传递给FutureTask构造函数。然后,通过线程池异步执行FutureTask对象,并在主线程中使用Future.get()方法获取异步操作的结果。注意,Future.get()方法会阻塞当前线程,直到异步操作完成并返回结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值