IT袋

当前位置:主页 > 经验教程 > 建站编程 >

获取双异步返回值时

获取双异步返回值时 如何保证主线程不阻塞?

时间:2024-01-25 18:00:14 来源:IT袋 作者:马勇
导读:获取双异步返回值时,本文导读:获取双异步返回值时的电脑方面的小经验,接下来IT袋网小编为大家介绍。 一、前情提要 在上一篇文章中, 使用双异步后,如何保证数据一致性? ,通过Fu

获取双异步返回值时

本文导读:获取双异步返回值时的电脑方面的小经验,接下来IT袋网小编为大家介绍。

一、前情提要

在上一篇文章中,使用双异步后,如何保证数据一致性?,通过Future获取异步返回值,轮询判断Future状态,如果执行完毕或已取消,则通过get()获取返回值,get()是阻塞的方法,因此会阻塞当前线程,如果通过new Runnable()执行get()方法,那么还是需要返回AsyncResult,然后再通过主线程去get()获取异步线程返回结果。

获取双异步返回值时

获取双异步返回值时

使用双异步后,如何保证数据一致性?

获取双异步返回值时3天前

0245113

写法很繁琐,还会阻塞主线程。

下面是FutureTask异步执行流程图:

获取双异步返回值时

二、JDK8的CompletableFuture

1、ForkJoinPool

Java8中引入了CompletableFuture,它实现了对Future的全面升级,可以通过回调的方式,获取异步线程返回值。

CompletableFuture的异步执行通过ForkJoinPool实现, 它使用守护线程去执行任务。

ForkJoinPool在于可以充分利用多核CPU的优势,把一个任务拆分成多个小任务,把多个小任务放到多个CPU上并行执行,当多个小任务执行完毕后,再将其执行结果合并起来。

Future的异步执行是通过ThreadPoolExecutor实现的。

相关阅读