Rx java 如何在RxJava中取消订阅时销毁Observable?

Rx java 如何在RxJava中取消订阅时销毁Observable?,rx-java,reactive-programming,rx-java2,Rx Java,Reactive Programming,Rx Java2,我有以下课程: public class Service { private Observable<Long> obs = Observable.interval(0, 10, TimeUnit.SECONDS); private Single<Foo> sendFooRequest() { return Single.fromCallable(() -> sendHttpRequest()); } public

我有以下课程:

public class Service {

    private Observable<Long> obs = Observable.interval(0, 10, TimeUnit.SECONDS);

    private Single<Foo> sendFooRequest() {
        return Single.fromCallable(() -> sendHttpRequest());
    }

    public Flowable<Foo> getFlowable() {
        return obs
                .toFlowable(BackpressureStrategy.BUFFER)
                .doOnNext(tick -> log.info("tick: {}", tick))
                .flatMapSingle(tick -> sendFooRequest())
                .distinctUntilChanged();
    }
}
输出如下所示:

17:33:58.826  INFO 11813 --- [nio-6969-exec-3] ...Service  : tick: 0
17:34:01.162  INFO 11813 --- [ionThreadPool-2] ...Service  : tick: 19
17:34:02.918  INFO 11813 --- [ionThreadPool-1] ...Service  : tick: 94
17:34:03.827  INFO 11813 --- [ionThreadPool-3] ...Service  : tick: 1
17:34:06.162  INFO 11813 --- [ionThreadPool-2] ...Service  : tick: 20
17:34:07.919  INFO 11813 --- [ionThreadPool-1] ...Service  : tick: 95
因此,看起来即使只有一个活动订阅者,应用程序仍然使用3个线程(并处理3个可观察对象),并且应用程序只创建一个
服务的实例


如何在
取消订阅
事件中销毁可观察对象?

上次订阅完成后,可观察对象将被正确清理。你提供的信息似乎没有什么问题

每次调用
getFlowable()
,都会创建一个新的观察者链。
Observable.interval()
操作符使用
Schedulers.computation()
executor获取一个新线程来运行


不清楚你想发生什么。您想让可观察对象在同一线程上运行吗?您希望只使用一小部分线程吗?

由于前两个客户端已断开连接,我希望相应的观察者链(ionThreadPool-1、ionThreadPool-2)消失。就像当第三个客户端订阅时,出于某种原因,我可以看到来自所有3个观察者链的滴答声。wdym by last subscription:一旦最后一个订阅完成,观察者将被正确清理。如果存在:订阅服务器1->connect->disconnect,订阅服务器2->connect->disconnect,#订阅服务器3->connect(因此它仍然处于活动状态),它是否算作未完成的最后一次订阅?>是否只需要使用一小部分线程?我认为这是有道理的,是的。
17:33:58.826  INFO 11813 --- [nio-6969-exec-3] ...Service  : tick: 0
17:34:01.162  INFO 11813 --- [ionThreadPool-2] ...Service  : tick: 19
17:34:02.918  INFO 11813 --- [ionThreadPool-1] ...Service  : tick: 94
17:34:03.827  INFO 11813 --- [ionThreadPool-3] ...Service  : tick: 1
17:34:06.162  INFO 11813 --- [ionThreadPool-2] ...Service  : tick: 20
17:34:07.919  INFO 11813 --- [ionThreadPool-1] ...Service  : tick: 95