Java 如何使用Reactor创建随机数生成器?
我想通过反复发射随机数来模拟测量数据。我试着用反应堆来做,但它不产生任何输出:Java 如何使用Reactor创建随机数生成器?,java,reactive-programming,project-reactor,Java,Reactive Programming,Project Reactor,我想通过反复发射随机数来模拟测量数据。我试着用反应堆来做,但它不产生任何输出: private static Random random = new Random(); public static void main(String[] args) throws InterruptedException { Flux<Double> doubleGenerator = Flux.generate( () -> random.nextDouble(
private static Random random = new Random();
public static void main(String[] args) throws InterruptedException {
Flux<Double> doubleGenerator = Flux.generate(
() -> random.nextDouble(),
(ignored, sink) -> {
sink.next(random.nextDouble());
return 0.0;
});
Flux<Long> timer = Flux.intervalMillis(1000);
Flux.combineLatest(doubleGenerator, timer, (value, ignored) -> value)
.subscribe(System.out::println);
}
如何使用Reactor创建随机值流?我使用Reactor 3.1解决了这个问题,因此在下面的解决方案中,Flux.intervalMillislong已更改为Flux.intervalDuration。本质上,我创建了一个通量,它以每秒一次的间隔发射一个数字,然后将其映射到一个随机数
final Random random = new Random();
Flux.interval(Duration.ofSeconds(1))
.map(pulse -> random.nextDouble())
.subscribe(System.out::println);
Thread.sleep(5000);
我只是在一个简单的main方法中做了我的示例,所以为了让通量实际存在足够长的时间来发射数据,我添加了睡眠 我使用反应堆3.1解决了这个问题,所以在下面的解决方案中,Flux.intervalMillislong已更改为Flux.intervalDuration。本质上,我创建了一个通量,它以每秒一次的间隔发射一个数字,然后将其映射到一个随机数
final Random random = new Random();
Flux.interval(Duration.ofSeconds(1))
.map(pulse -> random.nextDouble())
.subscribe(System.out::println);
Thread.sleep(5000);
我只是在一个简单的main方法中做了我的示例,所以为了让通量实际存在足够长的时间来发射数据,我添加了睡眠 但它不起作用->请描述它是如何不起作用的。你以为会发生什么事,后来又发生了什么事。你说得对。在这种情况下,我看不到任何输出,程序似乎无限运行。尝试在调用CombineTest时切换doubleGenerator和timer的顺序,然后添加一个Thread.sleep以阻止VM终止,您会得到一些结果-但它仍然不是您想要的。但它不工作->请描述它如何不工作。你以为会发生什么事,后来又发生了什么事。你说得对。在这种情况下,我看不到任何输出,程序似乎无限运行。尝试在调用CombineTest时切换doubleGenerator和timer的顺序,然后添加Thread.sleep以阻止VM终止,您会得到一些结果,但这仍然不是您想要的。