Java基础学习总结(197)—— CompletableFuture 异常处理总结

Posted 科技D人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础学习总结(197)—— CompletableFuture 异常处理总结相关的知识,希望对你有一定的参考价值。

package com.zhy.demo.javase.java8.future;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;

/**
 * CompletableFuture是Java 8提供了新特性,实现了CompletionStage接口和Future接口,增加了异步回调、流式处理、
 * 多个Future组合处理的能力。可以帮助我们简化异步编程的复杂性,让我们在Java在处理多任务的协同工作时更加顺畅便利。
 * 以下是记录一次使用CompletableFuture优化业务代码的技巧。
 * 需求场景:
 * 业务有一接口获取数据,数据需要在一个for loop中查询的数据,每个查询都是独立的互不影响,而且不能使用批量查询。
 * 当有一个查询抛出正常的业务异常时,直接把异常抛出无需继续往下查询。如果每一查询成功,则返回一个结果list。
 * 方案梳理
 * for loop下逐个查询,时间复杂度时O(n);
 * for loop增加线程池处理,理想的时间复杂度是O(1);
 * 明显使用线程池可以提升查询响应时间,值得注意是这里是要求有返回结果的。我们可以使用future.get()来阻塞获取线程池的结果包括异常。
 *
 * 但是,仅仅通过future.get()来获取结果就很容踩到一些坑的:
 *
 * future.get()获取的异常经过包裹,很难区分出业务正常抛出的异常;
 * for loop下

以上是关于Java基础学习总结(197)—— CompletableFuture 异常处理总结的主要内容,如果未能解决你的问题,请参考以下文章

Java基础学习总结(197)—— CompletableFuture 异常处理总结

197 01 Android 零基础入门 03 Java常用工具类 04 Java集合 03 Set集合 01 Set概述

Java学习笔记总结

java基础学习总结

Java菜鸟学习总结Java基础知识(类)

mysql 主从模式总结