以下陈述是否正确,否则如何改进?
当向Akka演员发送消息时,作业将提交给执行者。 当有一个空闲线程时,它会调用获得锁定的作业 演员(假设它可以,否则另一个工作)。该 然后调用actor的
receive
方法,一旦完成, 作业被丢弃,线程返回池中。然后重复该循环。 所有与并发线程相关的复杂内容都是 由Akka处理,让程序员专注于 解决业务问题。
答案 0 :(得分:8)
更准确的是:
当消息发送给actor时,它将被放置在此actor的名为 mailbox 的队列中。同时,可能有数百或数千个演员在其邮箱中有待处理的消息。 Akka使用有限数量的工作线程,选择此类actor的子集,并按时间顺序对邮箱中的每条消息调用
receive
方法。多个线程永远不会处理同一个actor。此外,Akka可能决定中断来自邮箱的消息处理,并选择不同的演员以保持公平并避免饥饿。因为每个
receive
调用都需要一个线程,所以此方法永远不应该阻塞,等待或休眠。