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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
我居然是兔子3 小时前
异常练习:在试错中吃透Java异常处理的底层逻辑
java·开发语言
CC.GG4 小时前
【C++】STL容器----unordered_map和unordered_set的使用
java·数据库·c++
Overt0p5 小时前
抽奖系统(4)
java·spring boot·tomcat
想做后端的小C6 小时前
Java:接口回调
java·开发语言·接口回调
爱学习的小可爱卢6 小时前
JavaEE进阶——Spring核心设计模式深度剖析
java·spring·设计模式
毕设源码-钟学长7 小时前
【开题答辩全过程】以 个性化电影推荐网站的设计与实现为例,包含答辩的问题和答案
java·spring boot
C++业余爱好者7 小时前
Power Job 快速搭建 及通信机制介绍
java
qq_2704900967 小时前
SpringBoot药品管理系统设计实现
java·spring boot·后端
、BeYourself8 小时前
SpringAI-ChatClient Fluent API 详解
java·后端·springai
星辰_mya8 小时前
reids哨兵集群与选主
java·开发语言