gpt4 book ai didi

java - CompletableFuture runAsync 与使用 Executor 执行每个 Runnable

转载 作者:行者123 更新时间:2023-11-30 06:03:31 25 4
gpt4 key购买 nike

最近我正在尝试实现一个电子邮件服务,它可以同时向每个用户发送电子邮件。我当前的实现电流如下所示:

ExecutorService executor = Executors.newSingleThreadExecutor();
tasks.forEach(executor::execute); // Each task sends an email to an user
executorService.shutdown(); // Reclaim all the resources

经过一些研究,我找到了一种新方法,使用 Java 8 CompletableFuture.runAsync(...) 方法。我已经使用这种方法:

ExecutorService executor = Executors.newSingleThreadExecutor();
tasks.forEach(task -> CompletableFuture.runAsync(task, executor));
executor.shutdown(); // Reclaim all resources

现在我有点困惑,就正确性、可扩展性而言,解决我的问题的最佳方法是什么,以及解决我的问题的最现代/最新方法是什么。

最佳答案

Executor.execute 将异步执行您的任务。

CompletableFuture.runAsync(Runnable, Executor) 也异步执行您的任务,但另外返回一个 CompletableFuture 对象,您可以使用它来链接/插入更多依赖任务。

(例如,发送邮件后,你想给自己发送一个通知表示成功:

CompletableFuture.runAsync(task, executor).thenRunAsync(this::sendNotify) 

对于您的用例,这没有什么不同。

为简单起见,您可以坚持使用第一个版本的代码。

关于java - CompletableFuture runAsync 与使用 Executor 执行每个 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com