Java 动态设置游戏中CompletionStages的线程池大小!和阿卡

Java 动态设置游戏中CompletionStages的线程池大小!和阿卡,java,playframework,akka,completion-stage,Java,Playframework,Akka,Completion Stage,在我的web应用程序中,我正在使用Play!建立在Akka之上用于管理线程的框架。 在一个特定的情况下,我组合了许多CompletionStage,从外部服务收集数据,我希望控制并行请求的数量,以避免这些外部服务负担过重。 一种不改变整个应用程序的方法是控制Akka使用的线程池大小。 现在,我在akka like中准备了两个线程池,并尝试在这两个池之间切换。 我正在使用以下内容编写CompletionStages: CompletableFuture.completedFuture(firstR

在我的web应用程序中,我正在使用Play!建立在Akka之上用于管理线程的框架。 在一个特定的情况下,我组合了许多CompletionStage,从外部服务收集数据,我希望控制并行请求的数量,以避免这些外部服务负担过重。 一种不改变整个应用程序的方法是控制Akka使用的线程池大小。 现在,我在akka like中准备了两个线程池,并尝试在这两个池之间切换。 我正在使用以下内容编写CompletionStages:

CompletableFuture.completedFuture(firstResult)
                        .thenComposeAsync( firstResult -> { dostuff(firstResult);}
根据Akka的说明,以下是如何设置当前线程池:

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

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

您需要将自定义执行器传递给ThencomposeSync方法:

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

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