代码之家  ›  专栏  ›  技术社区  ›  As As

Scala演员内部的线程休眠

  •  11
  • As As  · 技术社区  · 10 年前

    使用正确吗 Thread.sleep(5000); 在演员体内?这真的会让演员睡5秒钟吗?有没有一种简单的方法可以让演员睡几秒钟?

    1 回复  |  直到 10 年前
        1
  •  29
  •   Chris K    9 年前

    Akka中不建议任何阻塞线程的内容。如果Actor配置了共享线程池(默认行为),则使用thread.sleep将从该池中保留一个线程,该线程可能正在为其他Actor工作。

    如果一个参与者确实必须阻塞,那么可以将其配置为拥有自己的线程。这可以通过为参与者配置自定义分派器来完成,详细信息如下 here .

    公认的阻塞替代方法是通过计时器向参与者调度回调,例如在5秒后发送消息。。

    akkaSystem.scheduler.scheduleOnce(5 seconds, actor, "msgFoo")
    

    Akka调度程序记录如下: http://doc.akka.io/docs/akka/2.3.6/scala/scheduler.html