我正在寻找循环一段时间的可能性.例如,我想println("你好!")5分钟.
我正在使用Scala和Akka.
我正在考虑使用未来,它将在5分钟内完成,同时我将使用while循环,并检查它是否未完成.这种方法对我不起作用,因为我的班级不是演员,我不能从循环外完成未来.
任何想法,或者可能有这样的事情的现成解决方案?
目前难看的解决方案:
def now = Calendar.getInstance.getTime.getTime
val ms = durationInMins * 60 * 1000
val finish = now + ms
while (now <= finish) {
println("hi")
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
dre*_*xin 20
@Radian的解决方案具有潜在的危险性,因为当您的应用程序同时运行此代码几次时,它最终将阻止ExecutorService中的所有线程.你可以更好地使用a Deadline
:
import scala.concurrent.duration._
val deadline = 5.seconds.fromNow
while(deadline.hasTimeLeft) {
// ...
}
Run Code Online (Sandbox Code Playgroud)