1

コード スニペットを見てみましょう。

import scala.actors.Actor._

object ActorTest1 extends Application {
  val caller = self

  val badActor = actor {
     receive {
        case msg =>
          println(Thread.currentThread()+ " "+msg)
          caller ! "bbbb"
     }
  }

  badActor ! "aaaa"
  receive {
     case a: String => println(Thread.currentThread() + " " + a)
  }

}

badActor が送信者に "bbbb" と応答した後、アプリケーション全体がブロックされます。に変更caller ! "bbbb"するsender ! "bbbb"と動作します。

誰でも理由を説明できますか?

4

1 に答える 1

2

あなたの呼び出し元参照は実際には自分自身への参照であると思いますが、これはアクター インスタンスではありません! :-)

ここでわかるように、代わりに送信者は有効なインスタンスです: http://doc.akka.io/docs/akka/snapshot/scala/actors.html

于 2012-07-10T04:06:18.813 に答える