RxJava Async Nature

时间:2017-10-26 10:10:00

标签: rx-java2

我正在学习RxJava。一切都与异步有关。

这是代码

public void a(){
        long st = System.currentTimeMillis();
        int i = 100000;

        p().map(x -> x*x).subscribe(x -> System.out.println(x));

        p().map(x -> x*x).subscribe(x -> System.out.println(x));

        long et = System.currentTimeMillis();
        long d = et - st;
        System.out.println(d);
    }

    public Observable<Integer> p(){

        return Observable.create(subsrciber -> {
            for(int i1= 0;i1<10000000;i1++){
                Random r = new Random();
                int g = r.nextInt(100);
                if(i1 == g){
                    //
                }else{
                    //
                }
            }
            subsrciber.onNext(10);
        });

    }

这是什么异步? 我的意思是Observable是如何异步的?

此代码似乎完全同步。我想让它异步。我该怎么办?

我的意思是哪部分代码是异步运行的?

1 个答案:

答案 0 :(得分:0)

Ankit,Observables默认为同步并按顺序执行所有订阅者。对于您的示例,如果您想要查看异步行为,可以尝试向其中一个observable添加延迟

p()。延迟(3,TimeUnit.SECONDS).map(x - &gt; x * x).subscribe(x - &gt; System.out.println(x));

这将使这个Observable每3秒执行一次,而另一个执行无延迟