我读过:
Akka ensures that each instance of an actor runs in its own lightweight thread and its messages are processed one at a time.
如果是 AKKA Actor 按顺序处理其消息,那么 AKKA 如何为单个 Actor 提供并发性。
最佳答案
Actor是独立的计算代理,每个Actor都严格按顺序执行,但许多Actor可以同时执行。您可以将 Actor 视为一个线程,它的成本仅为普通线程成本的 0.1% 左右,并且还具有一个可以发送消息的地址——您当然可以在自己的线程中管理队列并将其用于消息传递但您必须自己实现所有这些。
如果 Akka——或者 Actor 模型——停在这里,那么它确实不会很有用。诀窍在于,为 Actor 提供稳定的地址 (ActorRef) 使它们甚至可以跨机器边界、通过网络、在集群中进行通信。它还允许对它们进行原则性故障处理的监督——当正常线程抛出异常时,它只是终止并且不采取任何措施来修复它。
正是这整套封装(通过将所有内容隐藏在 ActorRef 后面来提供)、位置透明的基于消息的通信以及对故障处理的支持,使得 Actor 模型非常适合表达分布式系统。如今,即使是最小的设备中也存在由许多 CPU 核心组成的分布式系统。
关于concurrency - AKKA 如何为单个 Actor 提供并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34813677/