让演员睡觉的最佳方式是什么?我将参与者设置为想要维护数据库的不同部分(包括从外部来源获取数据)的代理。出于多种原因(包括不使数据库或通信超载和一般负载问题),我希望参与者在每个操作之间休眠。我正在看类似 10 个演员对象的东西。
演员将几乎无限运行,因为总会有新数据进入,或者坐在表中等待传播到数据库的其他部分等。这个想法是让数据库在任何时候都尽可能完整及时。
我可以用一个无限循环来做到这一点,并在每个循环结束时休眠,但根据http://www.scala-lang.org/node/242演员使用一个线程池,只要所有线程都被阻塞,它就会扩展. 因此,我认为每个参与者中的 Thread.sleep 都是一个坏主意,因为这会不必要地浪费线程。
我也许可以有一个有自己的循环的中心参与者,它在时钟上向订阅者发送消息(如异步事件时钟观察者)?
有没有人做过类似的事情或有什么建议?很抱歉提供额外(也许是多余的)信息。
干杯
乔