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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
天天摸鱼的小学生几秒前
【Java泛型一遍过】
java·开发语言·windows
骇客野人22 分钟前
JAVA获取一个LIST中的最大值
java·linux·list
JIngJaneIL24 分钟前
基于Java失物招领系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·vue
程序员岳焱24 分钟前
Java泛型高级玩法:通配符、上下界与类型擦除避坑实战(纯干货,附完整工具类)
java·后端·程序员
期待のcode24 分钟前
MyBatis-Plus基本CRUD
java·spring boot·后端·mybatis
❀͜͡傀儡师25 分钟前
maven 仓库的Central Portal Namespaces 怎么验证
java·maven·nexus
豐儀麟阁贵25 分钟前
9.3获取字符串信息
java·开发语言·前端·算法
YJlio31 分钟前
第9章小结(9.19):Sysinternals 安全工具组合拳与脚本清单
java·学习·平面
甜鲸鱼35 分钟前
【Spring Boot + OpenAPI 3】开箱即用的 API 文档方案(SpringDoc + Knife4j)
java·spring boot·后端
robch35 分钟前
Java后端优雅的实现分页搜索排序-架构2
java·开发语言·架构