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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
kk哥889910 小时前
如何快速掌握JavaSE的核心语法?
java
我是一只小青蛙88810 小时前
AVL树:平衡二叉搜索树原理与C++实战
java·jvm·面试
浩瀚地学10 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
XXOOXRT11 小时前
基于SpringBoot的加法计算器
java·spring boot·后端·html5
阿崽meitoufa11 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
我是苏苏12 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
heartbeat..13 小时前
数据库基础知识体系:概念、约束、范式与国产产品
java·数据库·学习笔记·国产数据库
PXM的算法星球14 小时前
【操作系统】哲学家就餐问题实现详解
java
2301_8153577014 小时前
Java项目架构从单体架构到微服务架构的发展演变
java·微服务·架构