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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
钻仰弥坚3 分钟前
在线考试系统设计说明文档(需求分析部分)
java·需求分析
BugShare16 分钟前
嘿嘿,猜我刚刚发现了什么?IDEA全新UI,极致优雅贼好看!
java·idea
用户37779672109617 分钟前
90% 开发者踩过的坑:事务嵌套第三方接口的风险破解与实践
java
温柔一只鬼.29 分钟前
Java数组
java·开发语言·算法
小鱼小鱼.oO1 小时前
java后端学习经验分享(大三进大厂版)
java·经验分享·学习
Hooomeey1 小时前
深度解析线程与线程池:从 OS 调度内核到 Java 并发架构的演进逻辑
java·后端·架构
狂奔小菜鸡1 小时前
Day8 | Java 方法全解析
java·后端·java ee
Mos_x1 小时前
服务器公网IP、私网IP、弹性IP是什么?区别与应
java·后端
落日漫游1 小时前
ArgoCD与Helm:云原生部署对比解析
java·容器·kubernetes
Yeniden1 小时前
【设计模式】享元模式(Flyweight)大白话讲解!
java·设计模式·享元模式