Scala actor中的Thread.sleep

时间:2014-09-11 14:23:39

标签: scala concurrency actor

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

1 个答案:

答案 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