Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Reactor创建随机数生成器?_Java_Reactive Programming_Project Reactor - Fatal编程技术网

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终止,您会得到一些结果,但这仍然不是您想要的。