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

使用线程池:

返回计算结果:


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

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

缺点:

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

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

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

正常情况:


get()阻塞:

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


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

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

相关推荐
float_六七几秒前
Spring事务注解@Transactional核心机制详解
java·后端·spring
渣哥2 分钟前
Java 线程安全详解:定义、常见问题与解决方案
java
没有bug.的程序员3 分钟前
Redis 大 Key 与热 Key:生产环境的风险与解决方案
java·数据库·redis·缓存·热key·大key
We....10 分钟前
Java分布式编程:RMI机制
java·开发语言·分布式
玉衡子12 分钟前
七、InnoDB底层原理与日志机制
java·mysql
€81117 分钟前
Java入门级教程17——利用Java SPI机制制作验证码、利用Java RMI机制实现分布式登录验证系统
java·开发语言·java spi机制·远程传输数据
2301_8153577023 分钟前
parameterType和@Param注解的区别
java·开发语言·数据库
We....43 分钟前
Java 分布式缓存实现:结合 RMI 与本地文件缓存
java·分布式·缓存
2401_845417451 小时前
set和map
java·开发语言
所愿ღ1 小时前
JavaWeb-Servlet总结及JSP
java·笔记·servlet