Scala actor中的Thread.sleep

As *_* As 11 concurrency scala actor

Thread.sleep(5000);在演员中使用是否正确?它是否真的让演员睡了5秒钟?是否有一个简单的替代方案让演员睡了几秒钟?

Chr*_*s K 27

在Akka中不建议任何阻止线程的东西.如果Actor配置了一个共享线程池(默认行为),那么使用Thread.sleep将保留该池中可能正在为其他Actors工作的线程.

如果一个人真的必须阻止,那么一个actor可以被配置为拥有自己的线程.这可以通过为actor使用配置自定义调度程序来完成,完整的详细信息在这里.

已知的阻止替代方法是通过计时器安排对actor的回调,例如在5秒后发送消息.

akkaSystem.scheduler.scheduleOnce(5 seconds, actor, "msgFoo")
Run Code Online (Sandbox Code Playgroud)

这里记录了Akka调度程序:http://doc.akka.io/docs/akka/2.3.6/scala/scheduler.html