Eld*_*rum 6 scala termination exit actor
执行main()后,该程序不会退出.
object Main
{
def main(args: Array[String]) {
... // existing code
f()
... // existing code
}
def f() {
import scala.actors.Actor._
val a = actor {
loop {
react {
case msg: String => System.out.println(msg)
}
}
}
a ! "hello world"
}
}
Run Code Online (Sandbox Code Playgroud)
由于这种意想不到的副作用,使用演员可以被视为侵入性.
假设演员必须继续运行直到程序终止,您将如何在所有终止案例中保留原始行为?
在2.8中有一个允许这样的DaemonActor类.在2.7.x我可以破解自定义调度程序,即使仍有实时演员也不会阻止关闭,或者如果你想要一个简单的方法,你可以在main结束时调用System.exit().
如果你认为一个演员是一种轻量级线程,那么大多数时候你想要一个现场演员来防止程序终止.否则,如果你有一个程序在actor中完成它的所有工作,你需要在主线程上有一些东西只是让它保持活着直到所有演员完成.
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |