主要观点总结
文章介绍了在Java中获取异步线程结果的几种方案,包括使用Future和Callable、CompletableFuture和FutureTask。文章还详细解释了这些方案的工作原理和步骤。
关键观点总结
关键观点1: Future和Callable的使用
通过将任务提交给ExecutorService线程池执行,返回一个Future对象,该对象可以在未来某个时刻获取任务的执行结果。Callable是一个带泛型的接口,允许你定义一个返回结果的任务,并且可以抛出异常。
关键观点2: CompletableFuture的使用
Java 8引入的CompletableFuture类用于实现异步编程和异步任务的组合。它允许以异步方式执行任务,并提供了一系列方法来注册回调函数,处理任务的结果、完成时的操作以及任务执行异常时的处理。
关键观点3: FutureTask的使用
FutureTask是Java中实现Future接口的一个基本实现类,它封装了一个可调用的任务(Callable或Runnable),可以被提交给Executor(通常是ExecutorService)执行。通过Future接口的方法,可以等待任务执行完成并获取其结果。
文章预览
我们有一段业务,类似一个报表,就是获取用户的订单汇总,邮费汇总,各种手续费汇总,然后拿时间噶一卡,显示在页面。 但是呢,这几个业务没啥实际关系,数据也是分开的,一个一个获取会有点慢,我开始就是这样写的,老板嫌页面太慢,让我改,可是 页面反应慢,关我后端程序什么事 ,哥哥别打了,错了错了,我改,我改。那么最好的方案就是多线程分别获取然后汇总到一起返回。 在Java中获取异步线程的结果通常可以使用 Future 和 Callable 、 CompletableFuture 、 FutureTask 等类来实现。这些类可以用来提交任务到线程池,并在任务完成后获取结果。这就是我们想要的结果,那么这里来深入研究分析一下这三个方案。 使用Future和Callable package com.luke.designpatterns.demo; import java.util.concurrent.*; public class demo { public static void main (St
………………………………