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
Multithreading Scala接收(演员)没有接收任何东西?_Multithreading_Scala_Actor - Fatal编程技术网

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。