def receive = {
case Rumor => {
count+=1;
if ...
else self ! Sleep(FiniteDuration(20, "millis"))
}
case Sleep(duration) => {
case object WakeUp
context.system.scheduler.scheduleOnce(duration, self, WakeUp)
context.become(
{
case WakeUp => context.unbecome()
others ! Rumor
}, discardOld = false
)
}
case _=> .....
}
import scala.math._
import akka.actor._
import scala.util.Random
import scala.concurrent.duration._
error: Cannot find an implicit ExecutionContext, either require one yourself or import ExecutionContext.Implicits.global
context.system.scheduler.scheduleOnce(duration, self, WakeUp)
你整件事都做错了。Actors是专门为去除手动线程管理引起的大多数问题而设计的。其中一个特点是,参与者总是按顺序工作。不能强制执行元一次处理多个消息。Akka甚至提供了关于消息及其顺序的几个保证。这允许完全的线程安全,如果您不做任何愚蠢的事情,比如使用可变消息或直接调用其他actor对象。
当然,您可以在单独的线程中运行不同的参与者(使用正确的dispatcher),它们将真正并行地处理它们的消息。但您不能从多个线程运行单个执行元,无论您做什么。
您真的应该阅读优秀的Akka文档,特别是关于一般概念的部分。如果你读懂了,你就不会有这样的问题了。
我写了一个Akka基本演员,可以处理一些常见的消息。我想通过扩展基执行元(而不是通过基执行元的组合),在子执行元中重用这个基本行为。 我在前面的问题中看到过几种做法。它们都是有效的,但也可以改进: null 下面是两种可供选择的方法,我可以创建子执行元的实例,它结合了常见行为和附加行为: 最后,我可以通过以下方式调用子参与者: 我的实现存在的问题: 就像我之前说过的,我更喜欢在定义子执行元时混合基
class下导致new HelloWorld行出现错误: 所以我尝试:,但这会导致编译器错误: 下面的HelloWorld应该如何实现? 阅读其他Scala文档时,要求在扩展Actor的类中定义act方法,然后在该类上调用start方法,是否有理由使用actorOf而不是定义act方法? 以下内容摘自Scala akka docs http://doc.akka.io/docs/akka/2.2.
下面的行不编译,因为编译没有找到“hashmap$hashtriemap” 40) 最后,我的示例如下所示: 注我没有使用Kryo特定的Akka特性,我使用它作为一个通用的序列化框架。火花也一样。没有直接插入火花或akka配置。
我刚才比较了scala Actor和java线程的性能。 我很惊讶地看到了这种差异,我观察到我的系统最多只能生成2000个线程(一次活动),但在同一个系统中,我只能生成500,000个Scala参与者。
本文向大家介绍如何在JavaScript中实现多态?,包括了如何在JavaScript中实现多态?的使用技巧和注意事项,需要的朋友参考一下 多态性 多态 是面向对象编程(OOP)的宗旨之一。它有助于设计对象,使其可以与特定提供的对象共享或覆盖任何行为。多态性 利用继承的 优势来实现这一点。 在以下示例中,子对象(例如“板球”和“网球”)已覆盖从父对象“游戏”调用的“选择”方法,并分别返回了新字符串
R2DBC目前不支持复合键。我想知道我们现在如何实现多对多关系? 例如,给定两个实体: 以及它们的模式: 我可以为多对多映射创建一个表: 但是,我们应该如何在kotlin/java中定义映射类ItemTag? 或者省略可以吗?那么类就不能有任何?我想那很好。这是唯一的含义吗?