Java 通量反应堆-每小时简单计划

Java 通量反应堆-每小时简单计划,java,scheduled-tasks,project-reactor,Java,Scheduled Tasks,Project Reactor,如何使用Reactor而不是java的调度程序获得相同的效果 Executors.newSingleThreadScheduledExecutor() .scheduleAtFixedRate(() -> counter.set(0) , computeDelay(), computePeriod(), TimeUnit.MILLISECONDS) 我试过了 Flux .interval(Duration.ofMillis(computeDelay()),

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

Executors.newSingleThreadScheduledExecutor()
         .scheduleAtFixedRate(() -> counter.set(0) , computeDelay(), computePeriod(), TimeUnit.MILLISECONDS)
我试过了

 Flux
    .interval(Duration.ofMillis(computeDelay()),  Duration.ofMinutes(RESET_PERIOD_MINUTES))
    .doOnNext( counter.set(0))
    .subscribe())

但它产生了不必要的长期价值。我在Flux API中找到了一些调度程序,但在尝试创建一个调度程序时,我得到了一次性对象,然后我不知道该如何处理它

您找到了这两个选项。Flux.interval可用于与其他运算符组合。它发射代表每个滴答声的长信号,因为通量必须发射一些东西


Scheduler.scheduleAtFixedRate是另一个选项,与ExecutorService.scheduleAtFixedRate相当,只是它返回的是一次性的,而不是未来的Void。(在这两种情况下,你都会用它来取消工作)

如果只是翻转计数器,也许你真的不需要通量