我有许多完全异步的消费作品,大致同时开始。我的意思是这样的:
for (i <- 1 to n) {
Future { startWork("work" + i) }
}
但是我需要增加一些时间延迟来在不同的时间连续开始这些工作。例如,if(time lag = 1秒)=&gt; i-work在我秒之后开始。怎么可以简单地做到这一点?
谢谢!
答案 0 :(得分:1)
Play集成Akka进行日程安排。 In Play's documentation,您可以找到一个使用设置延迟运行一次代码块的示例:
import play.api.libs.concurrent.Execution.Implicits._
Akka.system.scheduler.scheduleOnce(10.seconds) {
file.delete()
}
Akka's documentation在其调度程序上有更多信息。
示例中的参数(10.seconds
)是FiniteDuration
,因此在您的情况下,您可能希望将其设置为i seconds
。
答案 1 :(得分:1)
import play.api.concurrent.Akka
import scala.concurrent._
import scala.concurrent.duration._
val promise = Promise[Unit]
Akka.system.scheduler.scheduleOnce(1.seconds) { promise.success() }
promise.future.map { _ => /* The body of the Future to be run in the future */ }
这应该是一种非阻塞解决方案,可以将Future的执行延迟到将来的某个时间。