多线程Future模型学习笔记

2018-11-04  本文已影响0人  lilac_163

为什么要使用Future?

这个要从Runnable接口说起。

Runnable接口

runnable接口里只有一个抽象方法,run方法返回类型是void,无法得到执行后的结果。

但在实际开发中如果想要获取最终的结果时Runnable接口就不适合了,那么获取结果怎么实现呢?Callable类可以有返回值。

Future是对具体的runnable和callable任务的结果进行查询、取消、是否完成、获取结果。它的get方法通过阻塞进程获取返回结果。

Future接口的方法

如何使用Future接口呢?

ExecutorService接口中有3个方法,可以将callable,runnable,future联系起来。

请下看面的例子:

demo

Future是个接口,无法创建对象,那么就有了FutureTask类。它实现了Future和Runnable接口。简单的总结,它可以使用

new Thread(Runnable b) 放在一个新的线程中执行,也可以使用executorService.submit(Runnable b)放在线程池中执行,两种方式都可以得到返回值。

FutureTask的2个构造方法

具体使用的例子:

FutureTask例子
上一篇下一篇

猜你喜欢

热点阅读