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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
用户0304805912632 分钟前
# 【Maven避坑】源码去哪了?一文看懂 Maven 工程与打包后的目录映射关系
java·后端
v***553422 分钟前
springboot使用logback自定义日志
java·spring boot·logback
qq_3363139324 分钟前
java基础-集合进阶
java·开发语言·windows
稚辉君.MCA_P8_Java25 分钟前
Gemini永久会员 归并排序(Merge Sort) 基于分治思想(Divide and Conquer)的高效排序算法
java·linux·算法·spring·排序算法
q***188425 分钟前
Spring Boot中的404错误:原因、影响及处理策略
java·spring boot·后端
222you26 分钟前
MybatisPlus常用注解
java·开发语言·spring
汤姆Tom41 分钟前
前端转战后端:JavaScript 与 Java 对照学习指南 (第一篇 - 深度进阶版)
java·javascript
济宁雪人1 小时前
Java安全基础——JNI安全基础
java·开发语言
q***96581 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
h***06651 小时前
【JSqlParser】Java使用JSqlParser解析SQL语句总结
java·开发语言·sql