CompletableFuture 与 ExecutorService
CompletableFuture vs ExecutorService
我已经尝试过可以由 CompletableFuture 完成的复杂用例,也可以由 ExecutorService 完成。这也包括处理异常。
我能看到它们之间的唯一区别是,CompletableFuture 在编码过程中提供了更好的可读性和便利性。
是否有任何可以使用 CompletableFuture 而不是 ExecutorService 解决的实际优势/用例?
CompletableFuture 的主要优点(至少对我而言)是它允许以更高的概率构建一个复杂的异步进程,以便从第一次就做对,并且在一段时间后仍然能够理解逻辑.
当然大部分可以使用ExecutorService来实现,这就需要subclass它,重写一些方法,重新提交任务...大部分都是CompletableFuture覆盖出来的盒子。此外,每次 jdk 更新时,最佳实践都会集成到 CompletableFuture class.
因此,使用 CompletableFuture 的实际原因是简单(嗯,您仍然需要了解如何使用它)。
例如:
CompletableFuture.supplyAsync(...)
.completeOnTimeout("foo" , 1, TimeUnit.SECONDS);
用ExecutorService实现没那么简单
想象简单的情况,你做动作A
,当复杂的时候,做B
,结果是A
- 是 Throwable
或有效结果。再加上还没有 CompletableFuture
,你不想阻止。仅 Future
s 可行吗?嗯,是。实现起来很痛苦吗?非常.
不要被其 API 的“简单性”所迷惑。在您之前的问题中,您已经了解了 not 为某些操作指定 ExecutorService
的作用。这种“简单”的包装带来了很多很多更微妙的东西。
CompletableFuture
的非阻塞功能使其高度可用并被开发人员高度采用。不仅是我们,普通开发人员,还有 jdk 开发人员 - 整个 jdk http 客户端都是围绕 CompletableFuture
构建的,这是有原因的。
你的问题不是 vs ExecutorService
,而应该是 vs Future
。 ExecutorService
仍然可以传递给 CompletableFuture
提供的方法。例如,阅读 了解各种方法的作用和行为。
我已经尝试过可以由 CompletableFuture 完成的复杂用例,也可以由 ExecutorService 完成。这也包括处理异常。
我能看到它们之间的唯一区别是,CompletableFuture 在编码过程中提供了更好的可读性和便利性。
是否有任何可以使用 CompletableFuture 而不是 ExecutorService 解决的实际优势/用例?
CompletableFuture 的主要优点(至少对我而言)是它允许以更高的概率构建一个复杂的异步进程,以便从第一次就做对,并且在一段时间后仍然能够理解逻辑.
当然大部分可以使用ExecutorService来实现,这就需要subclass它,重写一些方法,重新提交任务...大部分都是CompletableFuture覆盖出来的盒子。此外,每次 jdk 更新时,最佳实践都会集成到 CompletableFuture class.
因此,使用 CompletableFuture 的实际原因是简单(嗯,您仍然需要了解如何使用它)。
例如:
CompletableFuture.supplyAsync(...)
.completeOnTimeout("foo" , 1, TimeUnit.SECONDS);
用ExecutorService实现没那么简单
想象简单的情况,你做动作A
,当复杂的时候,做B
,结果是A
- 是 Throwable
或有效结果。再加上还没有 CompletableFuture
,你不想阻止。仅 Future
s 可行吗?嗯,是。实现起来很痛苦吗?非常.
不要被其 API 的“简单性”所迷惑。在您之前的问题中,您已经了解了 not 为某些操作指定 ExecutorService
的作用。这种“简单”的包装带来了很多很多更微妙的东西。
CompletableFuture
的非阻塞功能使其高度可用并被开发人员高度采用。不仅是我们,普通开发人员,还有 jdk 开发人员 - 整个 jdk http 客户端都是围绕 CompletableFuture
构建的,这是有原因的。
你的问题不是 vs ExecutorService
,而应该是 vs Future
。 ExecutorService
仍然可以传递给 CompletableFuture
提供的方法。例如,阅读