gpt4 book ai didi

scala - 在Scala中可以启动多少个actor?

转载 作者:行者123 更新时间:2023-12-04 22:07:56 25 4
gpt4 key购买 nike

我试过这个代码

import scala.actors.Actor

class MyActor(val id:Int) extends Actor {
def act() {
println (" ****************** starting actor: " + id)

while (true) {
Thread.sleep(1000);
println ("I'm actor " + id)
}
}
}

object Main {
def main(args:Array[String]) {
val N = 5
for (i leftArrow 1 to N) {
val a = new MyActor(i)
println (" ++++++++++ about to start actor " + a.id)
a.start
}

println (N + " actors launched?")
}
}

并得到这个输出
++++++++++ about to start actor 1
++++++++++ about to start actor 2
++++++++++ about to start actor 3
++++++++++ about to start actor 4
++++++++++ about to start actor 5
5 actors launched?
****************** starting actor: 1
****************** starting actor: 4
****************** starting actor: 3
****************** starting actor: 2
I'm actor 4
I'm actor 3
I'm actor 1
I'm actor 2
I'm actor 4

那么,我错过了什么,实际上只有四个 Actor 正在开始?
它取决于我的电脑吗?一些配置?我应该开始吗
Actor 以不同的方式?是因为我在 netbeans 中运行该代码吗?

非常感谢你 !

最佳答案

我认为这与 Scala 的 Actor 池有关。它可能(我仍在等待我的书“Scala 中的 Actor ”)创建一个具有四个线程的池(可能与您的四核 CPU 相关)并将您的 Actor 分配给它们。问题是,您使用 Thread.sleep 。这会吸引某个线程并绕过 scala 的 actor 进行线程分配。

关于scala - 在Scala中可以启动多少个actor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com