根据我对Akka并行性的理解,要处理每个传入的消息Actor使用一个线程。这个线程包含一个状态。事实上,顺序消息并不共享这个状态。
但是Actor可能有一个ExecutorContext,用于执行来自Future的回调。这就是我不再清楚地理解并行性的原因。
例如,我们有以下演员:
class AnyActor(target: ActorRef) extends Actor {
implicit val ec: ExecutionContext = context.dispatcher
def receive = {
case messageA =>
val api = createApi()
val furureA: Future[F] = api.callA
api.close()
futureA.pipeTo(sender())
case messageB =>
val api = createApi()
val furureB: Future[F] = api.callB
api.close()
futureB.pipeTo(sender())
}
}
假设,Actor接收到messageA,Thread 1创建api的示例--让我们调用“api 1”。还有一个具有N个线程的executionContext。其中一个线程用于从furureA中检索结果。
我不明白的是,这N个线程是如何与线程1相关联的。ExecutionContext是仅为线程1创建的?还是也为线程2创建的(在其中处理了messageB)?
暂无答案!
目前还没有任何答案,快来回答吧!