Flux Reactor - 每小时简单的时间表

min*_*ibi 7 java scheduled-tasks project-reactor

如何使用Reactor而不是java的调度器获得相同的效果?

Executors.newSingleThreadScheduledExecutor()
         .scheduleAtFixedRate(() -> counter.set(0) , computeDelay(), computePeriod(), TimeUnit.MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)

我试过

 Flux
    .interval(Duration.ofMillis(computeDelay()),  Duration.ofMinutes(RESET_PERIOD_MINUTES))
    .doOnNext( counter.set(0))
    .subscribe())
Run Code Online (Sandbox Code Playgroud)

但它会产生不必要的 Long 值。我在 Flux API 中找到了一些调度程序,但在尝试创建一个调度程序时,我得到了 Disposable 对象,然后我不知道应该用它做什么

Sim*_*slé 2

你找到了这两个选项。Flux.interval 对于与其他运算符组合非常有用。它发出代表每个价格变动的长整型,因为 Flux 必须发出一些东西

Scheduler.schedulePeriodically 是另一个选项,几乎等同于 ExecutorService.scheduleAtFixedRate,只不过它返回 Disposable 而不是 Future of Void。(在这两种情况下你都会用它来取消工作)