一.Future简介
在Java中如果提到异步任务,那么就一定会用到Future,它是Java中异步任务的接口,并在1.5版本就已出现.
Future定义了一些操作异步任务执行的方法,如获取异步任务的执行结果,判断任务是否执行完毕等.
简单来说就是我们可以通过Future将异步任务放到另一个线程中执行,并使用Future对返回结果进行接收.
二.Future及FutureTask来由
假如我们现在有这样一个需要:要实现 有返回值的多线程的异步任务,我们应该用什么接口或者什么类?
- 返回值–>Callable
多线程–>Runnable
异步任务–>Future
所以我们需要有一个类或接口将这三方势力都关联起来,供我们去调用.
现在看一下Future接口的实现类,FutureTask
它实现了两个接口,能够达到多线程和异步任务的目的,但是没有涉及到返回值,但是在Java中还提供了通过构造器传参数的一种方式,可以发现FutureTask的构造参数是需要传入一个Callable的.
这就达成了我们的目的,使用FutureTask就可以满足.
注:这里要说一下启动一个线程和异步任务的区别:
启动一个线程很简单,用runnable即可,异步任务是要满足Future异步任务的规范,比如说可以被取消,可以判断是否执行完毕等等.
三.Future简单使用
1.直接使用线程
2.利用线程池使用future进行接收.