vis*_*shr 4 asynchronous nonblocking completable-future
CompletableFuture.exceptionally()方法采用lambda,但该方法没有采用自定义Executor的风格,甚至没有采用“ ... Async”风格的风格。
lambda可以在哪个执行器上运行?运行原始CompletableFuture引发异常的是同一执行者吗?或者(如果是这种情况,我会感到惊讶)是commonPool吗?
表单JDK错误讨论CompletableFuture.exceptionally可以在主线程上执行:
CompletableFuture.exceptionally不采用Executor参数,因为它不是为了异步执行异常任务而设计的。如果从属任务尚未完成,那么例外任务将在从属任务完成的同一线程上完成。
如果从属任务已完成,则异常任务将在执行异常调用的线程上完成。
对于任何非异步执行,如thenAccept,都会发生相同的行为。
为了确保异常任务在执行程序线程池中的线程上执行,则必须使用 whenCompleteAsync或handleAsync并传入执行程序。
| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |