了解Akka Actors'穿线

时间:2017-01-23 09:44:18

标签: akka actor

我很难理解Akka中的Actors以及线程与Actor的关系。

让我们举一个冰箱演员和一个Person Actor的例子,将GetFoodMessage发送给冰箱演员参考。 假设不变性得到尊重。

  • 这些消息是否会在同一时间处理#34;在不同的线程中,或者这些消息将在队列中逐个处理?
  • 线程产生是否完全由库管理并从Actor的概念中抽象出来?
  • Actor是引用Actor的实例吗?
  • 当我停止演员(和他的孩子们)时,我会杀死线程吗? (如果冰箱没有更多食物,并通知演员不再提供食物)
  • Actor系统是所有这些线程的父进程吗?
  • 冰箱演员是个人演员的孩子吗?

在开发Akka系统时,这些问题都出现在我身上#34;为了好玩",我看到其他Stack Overflow线程讨论线程如何与Actors相关但我相信这些问题是不同的

1 个答案:

答案 0 :(得分:3)

  • 这些消息会在不同的线程中“同时”处理,还是会在队列中逐个处理这些消息? - 队列中的逐个消息

  • 线程产生是否完全由库管理并从Actor的概念中抽象出来? - 是的

  • Actor是引用Actor的实例吗? - 不。 Actor可以在另一个JVM实例中。

  • 当我停止演员(和他的孩子们)时,我会杀死线程吗? (如果冰箱没有更多的食物并通知演员没有更多的食物) - 没有

  • Actor系统是所有这些线程的父进程吗? - 没有

  • 冰箱演员是个人演员的孩子吗? - 它可以是,也可以不是,程序员决定

通常,Akka Actor是一个能够在线程池的单个线程上运行的任务。当有要处理的消息时,它将被提交给执行,并在没有更多消息时离开该线程。