gpt4 book ai didi

java - 在 Play 中动态设置 CompletionStages 的线程池大小!与 Akka

转载 作者:行者123 更新时间:2023-12-02 11:30:44 24 4
gpt4 key购买 nike

在我的网络应用程序中,我正在使用 Play!基于 Akka 构建的用于管理线程的框架。在特定情况下,我编写了许多从外部服务收集数据的 CompletionStages,我想控制并行请求的数量,以免使这些外部服务负担过重。在不更改整个应用程序的情况下实现此目的的一种方法是控制 Akka 使用的线程池大小。现在我在akka like中准备了两个线程池并尝试在两个池之间切换。我正在使用这样的东西来编写我的 CompletionStages:

CompletableFuture.completedFuture(firstResult)
.thenComposeAsync( firstResult -> { dostuff(firstResult);}

根据 Akka 的 documentation ,这是设置当前线程池的方法:

// this is scala.concurrent.ExecutionContext
// for use with Futures, Scheduler, etc.
final ExecutionContext ex = system.dispatchers().lookup("my-dispatcher");

通过观察我的应用程序,像这样设置上下文不会影响应用程序,并且只考虑默认调度程序。有没有办法动态设置Akka中当前池的大小?

最佳答案

您需要将自定义 Executor 传递给 thenComposeAsync 方法:

final java.util.concurrent.Executor exec = system.dispatchers().lookup("my-dispatcher");

CompletableFuture.completedFuture(firstResult)
.thenComposeAsync(firstResult -> {
dostuff(firstResult);
}, exec);

关于java - 在 Play 中动态设置 CompletionStages 的线程池大小!与 Akka ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319161/

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