了解 Akka Actor 的线程
Understanding Akka Actors' threading
我无法理解 Akka 中的 Actors 以及线程与 Actor 的关系。
让我们以 Fridge Actor 和 Person Actor 向 Fridge Actor Reference 发送 GetFoodMessage(s) 为例。
假设尊重不变性。
- 这些消息会在 "same time" 处在不同的线程中处理,还是会在队列中一条一条地处理?
- 线程生成是否完全由库管理并从 Actor 的概念中抽象出来?
- Actor 是否引用了 Actor 的实例?
- 当我停止一个 Actor(和他的 children)时,我是在杀死线程吗? (如果 Fridge 没有更多食物并通知 Person Actor 没有更多食物可用)
- Actor System 是所有这些线程的 parent 进程吗?
- 冰箱 Actor 是 Person Actor 的 child 吗?
这些问题都是我在开发 Akka 系统时遇到的"for fun",我看到其他 Stack Overflow 线程讨论线程如何与 Actors 相关,但我相信这些问题是不同的
这些消息会在 "same time" 处在不同的线程中处理,还是会在队列中一个接一个地处理?- 在队列中一个接一个地处理
线程生成是否完全由库管理并从 Actor 的概念中抽象出来? - 是的
Actor 引用的是 Actor 的实例吗? - 不。 Actor 可以在另一个 JVM 实例中。
当我停止一个 Actor(和他的 children)时,我是在杀死线程吗? (如果 Fridge 没有更多的食物并通知 Person Actor 没有更多的食物可用) - no
Actor System是所有这些线程的parent进程吗? - 没有
Fridge Actor 是 Person Actor 的 child 吗? - 它可以是,也可以不是,由程序员决定
一般来说,Akka Actor 是一个能够在线程池的单个线程上 运行 的任务。有消息处理时提交执行,没有消息时离开线程。
我无法理解 Akka 中的 Actors 以及线程与 Actor 的关系。
让我们以 Fridge Actor 和 Person Actor 向 Fridge Actor Reference 发送 GetFoodMessage(s) 为例。 假设尊重不变性。
- 这些消息会在 "same time" 处在不同的线程中处理,还是会在队列中一条一条地处理?
- 线程生成是否完全由库管理并从 Actor 的概念中抽象出来?
- Actor 是否引用了 Actor 的实例?
- 当我停止一个 Actor(和他的 children)时,我是在杀死线程吗? (如果 Fridge 没有更多食物并通知 Person Actor 没有更多食物可用)
- Actor System 是所有这些线程的 parent 进程吗?
- 冰箱 Actor 是 Person Actor 的 child 吗?
这些问题都是我在开发 Akka 系统时遇到的"for fun",我看到其他 Stack Overflow 线程讨论线程如何与 Actors 相关,但我相信这些问题是不同的
这些消息会在 "same time" 处在不同的线程中处理,还是会在队列中一个接一个地处理?- 在队列中一个接一个地处理
线程生成是否完全由库管理并从 Actor 的概念中抽象出来? - 是的
Actor 引用的是 Actor 的实例吗? - 不。 Actor 可以在另一个 JVM 实例中。
当我停止一个 Actor(和他的 children)时,我是在杀死线程吗? (如果 Fridge 没有更多的食物并通知 Person Actor 没有更多的食物可用) - no
Actor System是所有这些线程的parent进程吗? - 没有
Fridge Actor 是 Person Actor 的 child 吗? - 它可以是,也可以不是,由程序员决定
一般来说,Akka Actor 是一个能够在线程池的单个线程上 运行 的任务。有消息处理时提交执行,没有消息时离开线程。