1.个人简易实现future模式,可以自己实现使用阻塞线程,当请求结果未返回,否则结果返回唤醒阻塞线程,如果实现如下图,详细实现可查看文末参考资料

Java Future模式-LMLPHP

2.JDK 1.5开始支持的Future实现,实现多个任务异步化,但是请求结果无法直接获取返回结果,因为Future接口

Java Future模式-LMLPHP

3.JDK1.5中FutureTask既能当线程运行实现了Runnable接口,又能直接获取异步返回的Future数据实现了Future接口

Java Future模式-LMLPHP

4.项目中实战,当请求1和请求2执行时间差不多,性能能达到一倍的提升。但是注意:必须请求1和请求2无依赖关系,请求1和请求2耗时相差不大,不满足上面两个情况的话,否则引入线程池,以及任务增加了代码复杂,使用意义也不很大,性能提升也不明显。

Java Future模式-LMLPHP

5.java8 CompletableFuture可以支持前面请求异步 计算结果,多个请求获取数据也非阻塞了,性能也会有一点提升。

参考资料:

https://juejin.im/post/5b948b11f265da0aa949f0b2

12-01 03:31