我有一个斯卡拉演员的实现,基本上做平均。我推入维持总计和计数的条目并计算出平均值。发生了什么事情的时候,我在测试过程中以严密的循环运行这个测试,我错过了一个入口,我相信这是最后一个。 演员是这样的:斯卡拉演员和删除的条目
val actor = new Actor { def act = react {
case v: Long => addEntry(v); act
case _ =>()
}}.start()
编辑:addEntry的执行是这样的:
private def addEntry(v: Long) {
total = total + v
count = count + 1
avg = total/count
}
和附加基本上是actor ! 10
等
后,我打电话停止测试,我等待大约200毫秒,以确保队列被处理。 (或者我认为这就是我在做什么,这是问题所在?)
编辑2:基本上,我现在认为,因为我在紧密循环中设置这些值,然后立即调用退出,最后一项或条目正在/未被处理或正在被丢弃。我把循环结束之间有一个小的睡眠(实际上这是一个CountDownLatch.await和actor.stop,现在我不能让测试失败。
你可以显示'addEntry(v)'的实现以及如何将消息提交给actor? –