首页 > 解决方案 > 在 Quasar 中调度任务,而不产生新线程

问题描述

我想生成许多以特定时间间隔执行私有方法的 Actor。此任务将需要无限期地以时间间隔运行,直到 Actor 终止。

我在 Java 中看到的所有解决方案都涉及创建一个新线程,例如 Spring 的TaskExecutor或使用ScheduledExecutorService。因为 Actor 已经拥有自己的 Fiber,所以我认为没有理由生成线程,除非我的任务非常繁重。

在 Elixir 中,使用Process.send_after()很容易实现。

使用 Quasar 在 Java 中是否有类似的方法可以做到这一点?

标签: javamultithreadingquasar

解决方案


Fiber 具有 method sleep(long millis),因此您可以轻松创建定期执行的 Fiber:

while (!end) {
    doTask();
    sleep(period);
}

推荐阅读