Future是一个接口,该接口用来返回异步的结果。
FutureTask是一个类,是Future 的一个实现。
获取多线程异步执行结果,但get方法是一个同步方法,如果未拿到结果或者未超时,主线程则一直等待。
future.cancel(boolean flag)取消当前future任务。
future.isDone()判断当前future是否已经获取到异步结果,或者说异步的多线程是否已经执行完成并返回结果。
future.isCancelled()判断当前future获取异步结果的任务是否被取消。
从远程获取数据的计算结果,需要一定的时间,并且后面的代码与该数据暂时没有关系,直到最后才会使用该数据。
调用异步函数之后立马返回,主线程继续向下执行,等需要使用异步线程的数据的时候,再来调用获取或者等待获取该异步线程数据。
执行结果打印情况如下:
====进入主线程执行任务====提交异步任务====提交异步任务之后,立马返回到主线程继续往下执行异步任务开始执行....====此时需要获取上面异步任务的执行结果异步任务执行完毕,返回执行结果!!!!====异步任务返回的结果是:成功获取future异步任务结果因为FutureTask 类是 Future 的一个实现,Future 可实现 Runnable,所以可通过 threadPool 来执行。例如,可用下列内容替换上面带有 submit 的构造(为简化,返回String类型):
FutureTask<String> future = new FutureTask<String>(new Callable<String>() { public String call() { return "成功获取future异步任务结果"; }});threadPool.execute(future);新闻热点
疑难解答