我正在使用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实际上如何运作?