Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 阿克卡演员简介_Scala_Akka_Actor - Fatal编程技术网

Scala 阿克卡演员简介

Scala 阿克卡演员简介,scala,akka,actor,Scala,Akka,Actor,以下陈述是否正确,否则如何改进 当Akka参与者收到消息时,作业将提交给执行者。 当有一个空闲线程时,它调用在上获得锁的作业 演员(假设可以,否则另找工作)。这个 然后调用actor的receive方法,一旦完成, 作业将被丢弃,线程将返回池。然后重复该循环。 所有与并发线程相关的复杂内容都是 由Akka处理,让程序员可以专注于 解决商业问题 更准确的是: 当消息被发送到参与者时,它被放置在该参与者的称为邮箱的队列中。同时,可能有成百上千的参与者的邮箱中有挂起的消息。Akka使用有限数量的工作线

以下陈述是否正确,否则如何改进

当Akka参与者收到消息时,作业将提交给执行者。 当有一个空闲线程时,它调用在上获得锁的作业 演员(假设可以,否则另找工作)。这个 然后调用actor的receive方法,一旦完成, 作业将被丢弃,线程将返回池。然后重复该循环。 所有与并发线程相关的复杂内容都是 由Akka处理,让程序员可以专注于 解决商业问题


更准确的是:

当消息被发送到参与者时,它被放置在该参与者的称为邮箱的队列中。同时,可能有成百上千的参与者的邮箱中有挂起的消息。Akka使用有限数量的工作线程,选择此类参与者的子集,并按时间顺序使用邮箱中的每条消息调用其
receive
方法

多个线程从不处理同一个参与者。此外,阿克卡可能会决定中断邮箱消息的处理,并选择不同的参与者以保持公平并避免饥饿。因为每个
receive
调用都需要一个线程,所以此方法不应该阻塞、等待或休眠


这是对特定实现的描述,我假设是参与者。你应该修改它,并在你的文章标题这样说。如果这不是你的意图,那么你太过关注实现细节了,而这些细节在所有参与者系统中都不存在。每个actor实例都有自己的“邮箱”(不使用术语“job”的请求队列),排队的消息一次传递给一个actor。任何给定的actor实例一次都不会处理多个请求。一般来说,一个给定类型的参与者可以有任意数量,它们都是独立运作的。看——是的,我是说Akka,我已经更新了这个问题。Akka对参与者模型的实现确实没有锁。