巩固 Java Future 的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了巩固 Java Future 的使用相关的知识,希望对你有一定的参考价值。

Future 还是一 Java 1.5 带进来的产物,但过去那么多年实际代码中却很少有直接接触, 大约它多是隐匿在各种现成框架中默默的为我们服务。Future 本身不代表着多线程,而是代表着需异步计算的结果, 将来的一个期待,至于后来真正的结果不可知。在此之前想要获得一个 Runnable 在其他线程中的计算结果颇费波折,有了 Future 加之它身后的 Callable 一切就变得简单了。

对比一下 Java 1.5 前后的下面几个概念

  1. Callable 相当于之前的 Runnable, 只是 Callable 是有返回值的

  2. ExecuteService.submit(callable): Future 就类似于之前的 Thread(runnable)
    只是前者 submit 后立即执行,通过 get() 获得结果,后者用 start() 方法启动,runnable 是没有结果的。如果你也不想关心 Future 的结果也能 ExecuteService.submit(runnable)

只有 callable 被提交(到线程池) 后返回的 Future 才可能会有结果, 所以下面的代码永远等不到结果

Future<String> future = new FutureTask<>(() -> "Never");
String result = future.get();

最容易理解的 Future 基本使用代码如下: 阅读全文 >>


以上是关于巩固 Java Future 的使用的主要内容,如果未能解决你的问题,请参考以下文章

高效开发:java中Future的使用

java中Future与FutureTask使用与分析

Java Callable接口与Future接口的两种使用方式

java异步计算Future的使用(转)

java基础问题巩固

java future函数的作用