多线程Future模型学习笔记

为什么要使用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例子
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 13,879评论 4 56
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 10,536评论 0 23
  •   一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺...
    OmaiMoon阅读 5,631评论 0 12
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 7,846评论 3 53