在演员中使用Thread.sleep(5000);
是否正确?它实际上是让演员睡了5秒钟吗?是否有一个简单的替代方案让演员睡了几秒钟?
答案 0 :(得分:26)
在Akka中不建议阻止线程的任何内容。如果Actor配置了共享线程池(默认行为),那么使用Thread.sleep将保留该池中可能正在为其他Actors工作的线程。
如果真的必须阻止,那么可以将actor配置为拥有自己的线程。这可以通过为要使用的actor配置自定义调度程序来完成,完整的详细信息为here。
阻止识别的替代方法是通过计时器安排对演员的回调,例如在5秒后发送消息。
akkaSystem.scheduler.scheduleOnce(5 seconds, actor, "msgFoo")
此处记录了Akka调度程序:http://doc.akka.io/docs/akka/2.3.6/scala/scheduler.html