我想在创建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);