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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
xing-xing3 分钟前
Java大模型开发框架Spring AI
java·人工智能·spring
Coder_Boy_6 分钟前
【DDD领域驱动开发】基础概念和企业级项目规范入门简介
java·开发语言·人工智能·驱动开发
小付爱coding10 分钟前
本地部署dify教程【windows11版本】
java·ai·dify
y1y1z12 分钟前
Spring Security教程
java·后端·spring
MYMOTOE614 分钟前
ISC-3000S的U-Boot 镜像头部解析
java·linux·spring boot
CoderYanger17 分钟前
A.每日一题——3606. 优惠券校验器
java·开发语言·数据结构·算法·leetcode
谷哥的小弟25 分钟前
Spring Framework源码解析——ConfigurableEnvironment
java·spring·源码
毕设源码-郭学长26 分钟前
【开题答辩全过程】以 基于SpringBoot的宠物医院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
利剑 -~27 分钟前
设计java高并安全类
java·开发语言
CoderYanger28 分钟前
D.二分查找-基础——744. 寻找比目标字母大的最小字母
java·开发语言·数据结构·算法·leetcode·职场和发展