1
我是新來的Scala,我試圖去理解與演員的多線程。 我寫了這段代碼,我不明白一些行爲。Scala的郵箱大小在收到7封郵件後爲0
package sum
import scala.actors.Actor._
object ActorTest extends App {
val caller = self
val firstActor = actor {
Thread.sleep(3000)
println("Messages in mailbox: " + mailboxSize)
receive {
case x => println("First actor received: " + x)
}
println("Messages in mailbox: " + mailboxSize)
}
for(i <- 1 to 7)
{
firstActor ! "Hello" + i
println("Message sent")
}
}
這是輸出:
Message sent
Message sent
Message sent
Message sent
Message sent
Message sent
Message sent
Messages in mailbox: 0
First actor received: Hello1
Messages in mailbox: 6
我不明白,爲什麼在第一時間,在信箱中的留言是0,第二次在信箱中的留言是6,因爲所有的消息在線程睡着時發送。 我覺得我誤解了一些東西。有人能給我一個這種行爲的解釋嗎?
感謝
切換到阿卡。舊的斯卡拉演員圖書館已被棄用和劣質。 –
你是什麼意思?這是Scala中的一個bug嗎?它看起來像Akka是另一種語言... – wardva
Akka不是一種語言。它是一個併發和分佈式編程框架,包括可以從Scala或Java使用的Actors的大大改進的實現。它現在(從2.10開始)Scala標準庫期貨的實施。 –