我想在创建Actor System时将ExecutorService对象的引用作为默认的dispatcher/executionContext传递。有没有一种方法可以做到这一点,而不是从配置中读取调度程序属性。
发布于 2018-07-30 05:43:23
使用以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)
使用指定的名称、指定的配置、指定的ClassLoader和指定的ExecutionContext创建新的ActorSystem。 ExecutionContext将用作此ActorSystem内的默认执行器。如果为Config、ClassLoader和/或ExecutionContext参数传入
null
,则将使用各自的默认值。如果未提供配置,则将从ClassLoader获取默认参考配置。如果没有给定ClassLoader,它将首先检查当前线程的ClassLoader来获取当前的getContextClassLoader,然后尝试遍历堆栈以查找调用者的类加载器,然后回退到与ActorSystem类关联的ClassLoader。如果没有给出ExecutionContext,系统将回退到"akka.actor.default-dispatcher.default-executor.fallback".下配置的executor请注意,所有使用ExecutionContext = " default - executor“配置的分派器都将使用给定的executor,包括那些没有定义executor设置的分派器,因此将退回到默认值"default-dispatcher.executor”。
例如:
import scala.concurrent.ExecutionContext;
final ExecutionContext ec = ...
ActorSystem system = ActorSystem.create("MySystem", null, null, ec);
https://stackoverflow.com/questions/51583993
复制相似问题