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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
Zaralike6 分钟前
Java设计模式
java·开发语言·设计模式
一 乐28 分钟前
智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
JIseven37 分钟前
uniapp页面新手引导
java·前端·uni-app
ChinaRainbowSea1 小时前
Spring Boot3 + JDK21 的迁移 超详细步骤
java·spring boot·后端·spring
從南走到北1 小时前
JAVA海外短剧国际版源码支持H5+Android+IOS
android·java·ios
CoderYanger1 小时前
动态规划算法-子数组、子串系列(数组中连续的一段):26.环绕字符串中唯一的子字符串
java·算法·leetcode·动态规划·1024程序员节
老华带你飞1 小时前
旅游|基于Java旅游信息推荐系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端·旅游
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据可视化在企业供应链动态监控与优化中的应用
java·数据采集·大数据可视化·动态优化·企业供应链·实时预警·供应链监控
van久1 小时前
.Net Core 学习:DbContextOptions<T> vs DbContextOptions 详细解析
java·学习·.netcore
Coder_Boy_2 小时前
【物联网技术】- 基础理论-0001
java·python·物联网·iot