akka 基于ExecutionContext的Actor理解

4xrmg8kj  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(159)

根据我对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)?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题