CompletableFuture 方法总结
2024-01-31 12:01:13 0 举报
AI智能生成
CompletableFuture 是Java 8引入的一个强大的异步编程工具类。它提供了许多方法来处理异步任务,如supplyAsync,runAsync,thenApply,thenAccept,thenCombine等。这些方法可以帮助我们简化异步编程,提高代码可读性和可维护性。CompletableFuture 使用future 作为基础,通过回调机制实现异步任务的编排和处理。同时,它还支持异常处理,可以让我们更灵活地处理异步任务可能出现的问题。可以说,CompletableFuture 是在Java 8中实现异步编程的强大工具。
作者其他创作
大纲/内容
创建异步任务
runAsync
创建并执行CompletableFuture异步任务,支持返回值
supplyAsync
创建并执行CompletableFuture异步任务,无返回值
completedFuture
创建并返回一个已经用给定值完成的新 CompletableFuture,等价于:new CompletableFuture() + complete() 结合。
failedFuture
创建并返回一个已经完成的 CompletableFuture,并且它的结果为一个异常
异步回调方法
thenRun / thenRunAsync
不关心上一个任务的执行返回结果,无传参,无返回值
thenAccept / thenAcceptAsync
依赖上一个任务的结果,有传参,无返回值
thenApply / thenApplyAsync
依赖上一个任务的结果,有传参,有返回值
thenCompose / thenComposeAsync
依赖上一个任务的结果,有传参,有返回值【此返回值是一个 CompletionStage】
whenComplete / whenCompleteAsync
某个任务执行完成后,执行的回调方法,无返回值
exceptionally /exceptionallyAsync
某个任务执行异常时,执行的回调方法,有返回值
handle / handle
某个任务执行完成后,执行的回调方法,有返回值
多个任务组合处理
AND 组合关系
runAfterBoth / runAfterBothAsync
只有这两个都正常执行完了,才会执行下个任务。不会把两个任务的执行结果当做方法入参,且没有返回值
thenAcceptBoth / thenAcceptBothAsync
只有这两个都正常执行完了,才会执行下个任务。会将两个任务的执行结果作为方法入参,传递到指定方法中,且无返回值
thenCombine / thenCombineAsync
只有这两个都正常执行完了,才会执行下个任务。会将两个任务的执行结果作为方法入参,传递到指定方法中,且有返回值
OR 组合关系
runAfterEither / runAfterEitherAsync
只要其中一个执行完了,就会执行下个任务。不会把任务执行结果当做方法入参,且没有返回值。
acceptEither / acceptEitherAsync
只要其中一个执行完了,就会执行下个任务。会将已经执行完成的任务,作为方法入参,传递到指定方法中,且无返回值
applyToEither / applyToEitherAsync
只要其中一个执行完了,就会执行下个任务。会将已经执行完成的任务,作为方法入参,传递到指定方法中,且有返回值
anyOf
等待所有任务完成,无返回值。
allOf
只要有一个任务完成,并返回执行结果。
任务的获取和完成与否判断
isDone
判断任务是否执行完成
isCancelled
判断任务是否中断取消
cancel
取消中断任务,如果任务未完成,则返回异常
isCompletedExceptionally
判断任务是否因发生异常结束的
join
阻塞等待,获取返回值
get
阻塞等待,获取返回值,区别是get需要返回受检异常,并且可以设置超时时间
getNow
不阻塞,未完成则返回指定
complete
如果任务没有完成,返回的值设置为给定值
completeExceptionally
如果任务没有完成,则是异常调用,返回异常结果
obtrudeValue
强制地将返回值设置为指定值,无论该之前任务是否完成;类似重写complete
obtrudeException
强制地让异常抛出,异常返回,无论该之前任务是否完成;类似重写completeExceptionally
orTimeout
如果任务在指定的时间内没有完成,将会触发超时操作,抛出 TimeoutException 异常
completeOnTimeout
如果任务在指定的时间内没有完成,将返回默认值
completeAsync
创建完成的CompletableFuture,使用supplier构建执行任务,类似静态方法 supplyAsync(),可以自定义线程池
0 条评论
下一页