理论

所谓 future 模式就是将任务提交给后台线程,然后主线程继续进行其他任务,当调用任务返回数据的时候,如果任务还未返回就阻塞等待任务。

举个例子:

一个人上街买西瓜汁(5min)和馒头(1min)

传统方式:

因为西瓜汁要榨所以要等待5分钟,而馒头是做好的不用等待,传统方式是:先买西瓜,就等5分钟,然后再买馒头。总共耗时:5+1

Future模式:

让西瓜汁先做,然后自己去买馒头,回来,在等4分钟,也就是并行计算

总共耗时:5分钟

分析:为何会阻塞

原因就是变量等待被赋值,一直阻塞在某一行,那么如果不想被阻塞,那么当调用方法直接就返回,那么就不会被阻塞了。

于是我们将直接调用方法进行包装,当线程调用返回,会立即返回结果。当对结果进行处理的时候(判断这是数据是否已经返回,如过没有返回,那么久阻塞)才会真正被阻塞。

代码实现

JDK中如何实现

1.集成Callable2.重写call方法

查看原文 >>
相关文章