在Java中为Actor System设置默认的ExecutionContext



我想在创建Actor System时,将Java中的ExecutorService对象的引用作为默认的dispatcher/executionContext传递。有没有一种方法可以做到这一点,而不是从配置中读取调度器属性。

使用以ExecutionContext为参数的ActorSystem工厂方法create。以下是方法签名和Javadoc(强调矿(:

public static ActorSystem create(java.lang.String name,
com.typesafe.config.Config config,
java.lang.ClassLoader classLoader,
scala.concurrent.ExecutionContext defaultExecutionContext)

使用指定的名称、指定的Config、指定的ClassLoader和指定的ExecutionContext创建一个新的ActorSystemExecutionContext将用作此ActorSystem内的默认执行程序。如果为Config、ClassLoader和/或ExecutionContext参数传入null,则将使用相应的默认值。如果未给定Config,则将从ClassLoader中获取默认的引用配置。如果没有给定ClassLoader,它将通过首先检查当前线程的getContextClassLoader来获得当前ClassLoader。然后尝试遍历堆栈以找到调用方的类加载器,然后返回到与ActorSystem类关联的ClassLoader上。如果没有给出ExecutionContext,系统将回退到"akka.aactor.default dispatcher.default executor.fallback"下配置的executor。请注意,给定的ExecutionContext将由所有配置了executor="default executor"的调度器使用,包括那些没有定义executor设置,从而回退到默认的"defaultdispatcher.executor"的

例如:

import scala.concurrent.ExecutionContext;
final ExecutionContext ec = ...
ActorSystem system = ActorSystem.create("MySystem", null, null, ec);

最新更新