Multithreading Scala接收(演员)没有接收任何东西?
我一直想和演员们一起玩,但我遇到了一个问题。当我试着把一些东西发回给打电话的人时,它似乎根本没有通过,即使它正在处理一个不同的案例。 我在父参与者中的接收如下所示:Multithreading Scala接收(演员)没有接收任何东西?,multithreading,scala,actor,Multithreading,Scala,Actor,我一直想和演员们一起玩,但我遇到了一个问题。当我试着把一些东西发回给打电话的人时,它似乎根本没有通过,即使它正在处理一个不同的案例。 我在父参与者中的接收如下所示: receive { case (x,1) => { // case of html println("reaches here!") } case (url,name,2) => {
receive {
case (x,1) => { // case of html
println("reaches here!")
}
case (url,name,2) => {
println("doesnt reach here!")
}
case _ => println("Error on callback")
}
My actors(类处理器的)act方法(意译):
第一个参与者的act方法将调用以下代码:
{
println()
caller ! (s,1)
println(caller)
val processUrls = new Processor(2, s.toString, caller, map, queue)
processUrls.start()
}
因此,上面的一个是有效的。它生成同一类的另一个参与者,该参与者调用不同的方法,但将其传递给同一个调用者,以便原始调用者将接收消息。它在其act中调用以下方法:
{
...
...
println(caller)
caller ! (url, name.get, 2)
}
到目前为止,调用方是完全相同的(在两个地方打印出来的结果是完全相同的)
但是,当我尝试用第二种方法发送回消息时,绝对不会打印任何内容。就好像调用者甚至没有收到消息一样。即使是“一网打尽”的情况也不会打印出来。我不知道发生了什么。没关系,我的接收没有被一个循环包围…我还建议您开始查看Akka(Akka.io)中间件项目。这是一个为Scala设计的Actors实现(带有一个很好的JavaAPI),它将取代Scala 2.10.0中开始的Scala Actors。