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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
それども20 小时前
什么是MalformedStreamException,和WebKitFormBoundary有什么关系
java
思想在飞肢体在追20 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
cyforkk20 小时前
09、Java 基础硬核复习:异常处理(容错机制)的核心逻辑与面试考点
java·数据库·面试
??(lxy)20 小时前
java高性能无锁队列——MpscLinkedQueue
java·开发语言
数研小生20 小时前
Full Analysis of Taobao Item Detail API taobao.item.get
java·服务器·前端
Wang153021 小时前
Java编程基础与面向对象核心概念
java
毕设源码-郭学长21 小时前
【开题答辩全过程】以 康复管理系统为例,包含答辩的问题和答案
java
毅炼21 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
winfreedoms21 小时前
java-网络编程——黑马程序员学习笔记
java·网络·学习
开开心心就好21 小时前
键盘改键工具免安装,自定义键位屏蔽误触
java·网络·windows·随机森林·计算机外设·电脑·excel