是否有特定于Scala的方法来实现定期执行?

Avi*_*lax 5 concurrency scala actor

AKA按设定的间隔做某事.

例如,假设我想每60秒扫描一个目录.

在Java中,我会使用ScheduledExecutorService如下:

Executor pool = Executors.newScheduledThreadPool(10)
pool.scheduleAtFixedRate(scanner, 0, 60, TimeUnit.SECONDS)
Run Code Online (Sandbox Code Playgroud)

这很好.

问题是,我想我想在我的程序中尝试使用Scala actor,但是我对如何组合actor和Java Executor,或者它们是否应该这样做有点困惑.

我想也许我可以有一个简单的跑步者,它只会每隔N秒向一个演员发送一条消息- 这有意义吗?

oll*_*erg 2

我想也许我可以有一个简单的跑步者,它只会每 N 秒向演员发送一条消息 - 这有意义吗?

是的,顺便考虑一下使用 Akka 作为 Actor。它有更简单的 API、更好的性能并且有很多美味的东西。

  • 演员暗示。Scala 附带的并不是真正的语言的一部分,只是感觉如此。Akka 无法取代 Actor 实现。随 Scala 一起提供,因为它们没有相同的 API。就像盖伊·斯蒂尔(Guy Steele)所说的那样:你不能将所有好的框架都放入语言中,最好让每个用户做出决定。Akka 是如何扩展(=扩展)Scala 的完美示例,而 Scala 就是按比例设计的。但有计划将 STM 放入 Scala 中。如果你不想等待,你可以使用 Akka 中的 STM。 (4认同)