对比一下 Java 1.5 前后的下面几个概念
Callable 相当于之前的 Runnable, 只是 Callable 是有返回值的
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 基本使用代码如下: 阅读全文 >>
原文:http://blog.51cto.com/unmi/2123634