Rxjava:Schedulers.io()vs Schedulers.from(scheduledExecutorService)

时间:2018-06-15 09:43:58

标签: rx-java2 scheduledexecutorservice spring-cloud-sleuth

我正在使用Rxjava2与spring boot 2和spring cloud finchley。

现在我面临的问题是schedulers.io(),它不会生成新的跟踪ID,它会从之前的请求中重用它们。我假设这必须是因为它们被重用,因此他们使用的是旧数据。代码是:

Observable<Optional<String>> data = client.getWorld().subscribeOn(Schedulers.io());
        Observable<Optional<String>> data1 = client.getWorld1().subscribeOn(Schedulers.io());
        Observable<Optional<String>> data2 = client.getWorld1().subscribeOn(Schedulers.io());
        Observable<Optional<String>> data3 = client.getWorld().subscribeOn(Schedulers.io());

但我改变了我的代码。我创建了自己的 ScheduledExecutorService

    ScheduledExecutorService scheduler =  Executors.newScheduledThreadPool(100);
    Observable<Optional<String>> data = client.getWorld().subscribeOn(Schedulers.from(scheduler));
    Observable<Optional<String>> data1 = client.getWorld1().subscribeOn(Schedulers.from(scheduler));
    Observable<Optional<String>> data2 = client.getWorld1().subscribeOn(Schedulers.from(scheduler));
    Observable<Optional<String>> data3 = client.getWorld().subscribeOn(Schedulers.from(scheduler));

现在每次都会生成新的traceid?

现在我的问题是: a)为什么它开始使用ScheduledExecutorService。我的意思是因为它也是一个池,它也必须使用线程池和旧线程。

b)ScheduledExecutorService实际上如何运作?

0 个答案:

没有答案