future和futureTask 的区别

future和futureTask 的区别:

future 是一个接口,没有办法实例化,只能通过线程池的submit方法得到,
在这里插入图片描述
如上图所示,线程池执行submit方法可以得到返回值是Future<?>类型的对象,其中:
第一个类型的submit,它的参数是Callable类型,所以Future对象执行get方法是有返回值的。
第二个类型的submit,它的参数是Runnable类型,所以Future对象执行get方法是有返回值是null。
第三个类型的submit,它的参数是(Runnable类型,任意引用类型),所以Future对象执行get方法是有返回值是任意类型对象的值,该对象的返回表示,线程已经执行完毕。

对于 FutureTask 来说,它是一个实现了Futrue和Runnable接口的类,所以首先它是可以异步返回线程执行的结果的,同时因为其作为实现了Runnable接口的类,所以可以像Runnable的类型的对象一样开启一个线程。
并且可以实例化的。

1、如下图所示,FutureTask的构造方法的参数可以是单独的Callable也可以是Runnable+一个引用类型作为result,也就是说 FutureTask 它一定是要有返回值存在的,当然返回值可以是null,但是初衷应该是尽量避免null。

在这里插入图片描述

2、FutureTask如何开启一个线程
如下图两种方式,因为其作为实现了Runnable接口的类,所以可以像Runnable的类型的对象一样开启一个线程。
在这里插入图片描述

3、future 和futureTask的异步输出
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值