z*c 发帖数: 63 | 1 学校里的项目自己手贱偏要选用scala搞,结果身边没人会,网上资料也相对少多了,
各种疑惑也找不到解答....
目前设计程序一启动就创建200个actors,然后每个actor都一直运行下去。每个actors
的逻辑里头都有个while(true)和Thread.sleep(5000),每隔五秒重复一次。
目前的问题是不知咋的代码一运行只能创建12个actors....
代码如下:
imgs是一个大小为200的list of string
Raw是“final case class Raw(data: String)”
for (img <- imgs) {
lazy val imgActor = Akka.system.actorOf(Props[ImageProcessing])
imgActor ! Raw(img)
}
然后ImageProcessing长这样:
class ImageProcessing extends Actor {
import Application._
def receive =
{
case Raw(data) => this.synchronized
{
println(data)
Thread.sleep(5000)
//do sth.
}
}
}
按理说应该一来就打印200个string,然后每隔五秒就重复打印一次对吧??!!
结果输出是每隔5秒只打印12个string.... |
b******M 发帖数: 1162 | 2 Thread.sleep ....
典型的anti pattern |
z*c 发帖数: 63 | 3
求指导...
【在 b******M 的大作中提到】 : Thread.sleep .... : 典型的anti pattern
|
b******M 发帖数: 1162 | |
p*****2 发帖数: 21240 | 5 actor不是这么用的呀
actors
【在 z*c 的大作中提到】 : 学校里的项目自己手贱偏要选用scala搞,结果身边没人会,网上资料也相对少多了, : 各种疑惑也找不到解答.... : 目前设计程序一启动就创建200个actors,然后每个actor都一直运行下去。每个actors : 的逻辑里头都有个while(true)和Thread.sleep(5000),每隔五秒重复一次。 : 目前的问题是不知咋的代码一运行只能创建12个actors.... : 代码如下: : imgs是一个大小为200的list of string : Raw是“final case class Raw(data: String)” : for (img <- imgs) { : lazy val imgActor = Akka.system.actorOf(Props[ImageProcessing])
|
z*c 发帖数: 63 | 6
我一直把它当轻量级的thread用来着...
【在 p*****2 的大作中提到】 : actor不是这么用的呀 : : actors
|
z*c 发帖数: 63 | 7
多谢赐教!!!!!!!!
【在 b******M 的大作中提到】 : 你要先想明白为什么要synchronized, 为什么要Thread.sleep : 然后看一下这个:http://doc.akka.io/docs/akka/snapshot/scala/dispatchers.html
|
p*****2 发帖数: 21240 | 8 不能block
【在 z*c 的大作中提到】 : : 多谢赐教!!!!!!!!
|