根据文档,使用actor的更简单方法是:
承诺promiseOfInt = Akka.future(新Callable() { public Integer call(){ 回来......; }});
但该文档还说,使用Java API,它将始终使用相同的线程池(播放默认线程池)。
文档说,演员也有一个Akka池。 如何将此actor任务发送到Akka线程池,而不是阻止常见的用户操作? 所以我可以调整Akka池并保持默认池的小。
谢谢, 卢瓦克
答案 0 :(得分:1)
Java Akka 插件(play.libs.Akka
)转发到Scala插件(play.api.libs.Akka
),后者又根据应用程序的配置启动新的Actor系统。 (这就是插件的全部内容。)
因此,您将使用基于akka
配置密钥的普通application.conf文件配置ActorSystem及其所有调度程序(调度程序也是ExecutionContext)。这些调度程序是文档所指的线程池。
导入play.api.libs.concurrent.Execution.default
时使用默认线程池。这是一个仅限Scala的API。在Java中,只要您触及期货和承诺,就会自动使用此ExecutionContext。此线程池实际上基于Play的内部actor系统,通过play
配置密钥配置。
总而言之,所有演员在通过Akka插件的ActorSystem创建时,将自动使用Akka线程池(在演员内部,你可以使用context.dispatcher
来引用它。)
外部演员,您将使用Play的默认/内部线程池。