CompletableFuture-FutureTask结合线程池提升性能

使用线程池:

返回计算结果:


2.2.3 Future编码实战和优缺点分析

优点:Future+线程池异步多线程任务配合,能显著提高程序的运行效率。

缺点:

get()阻塞---一旦调用get()方法求结果,一旦调用不见不散,非要等到结果才会离开,不管你是否计算完成,如果没有计算完成容易程序堵塞。

isDone()轮询---轮询的方式会耗费无谓的cpu资源,而且也不见得能及时得到计算结果,如果想要异步获取结果,通常会以轮询的方式去获取结果,尽量不要阻塞。

结论:Future对于结果的获取不是很友好,只能通过阻塞或轮询的方式得到任务的结果。

正常情况:


get()阻塞:

main线程被阻塞了,futureTask.get() 后过了5秒才打印main ----忙其它任务了


设置 futureTask.get() 3秒钟,过时不候

非常粗暴,直接抛异常,不建议使用

相关推荐
ExiFengs4 分钟前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj1234567895 分钟前
JDK1.8新增特性
java·开发语言
繁依Fanyi16 分钟前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
慧都小妮子27 分钟前
Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图
java·pdf·.net
m512731 分钟前
LinuxC语言
java·服务器·前端
IU宝36 分钟前
C/C++内存管理
java·c语言·c++
瓜牛_gn37 分钟前
依赖注入注解
java·后端·spring
hakesashou38 分钟前
Python中常用的函数介绍
java·网络·python
佚先森1 小时前
2024ARM网络验证 支持一键云注入引流弹窗注册机 一键脱壳APP加固搭建程序源码及教程
java·html
古月居GYH1 小时前
在C++上实现反射用法
java·开发语言·c++