Java 求独立观测值

Java 求独立观测值,java,rx-java,Java,Rx Java,是否有可能将多个观测值排队,以便它们在彼此不知情的情况下,彼此相继执行 假设我在3个不同的类和/或线程中有3个不同的观测值。它们都代表一个不同的请求。何时执行它们的顺序取决于哪个observable拥有第一个订户(我们不知道) 我想要的是,它们在某种队列中彼此之后执行,如果有第四个可观察对象加入队列,则应将其添加到队列中,并在第三个队列之后执行 通过一些ootb rx工具,这可能吗?根据我从您的问题中了解到的情况,您希望构建一个可观察的。然后使用concatMap Observable<O

是否有可能将多个观测值排队,以便它们在彼此不知情的情况下,彼此相继执行

假设我在3个不同的类和/或线程中有3个不同的观测值。它们都代表一个不同的请求。何时执行它们的顺序取决于哪个observable拥有第一个订户(我们不知道)

我想要的是,它们在某种队列中彼此之后执行,如果有第四个可观察对象加入队列,则应将其添加到队列中,并在第三个队列之后执行


通过一些ootb rx工具,这可能吗?

根据我从您的问题中了解到的情况,您希望构建一个
可观察的
。然后使用
concatMap

Observable<Observable<Result>> tasks = ... //build your Observable of Observable

tasks.concatMap(obs -> obs)
     .subscribe(resultOfNestedObservable -> /** getting result of Observable **/);

如果我正确理解了这个问题,您有独立的可观察对象和独立的订阅者,但是您仍然希望确保只有一个可观察对象“正在执行”。这可以通过自定义计划程序实现:

ExecutorService exec = Executors.newFixedThreadPool(1, r -> {
    Thread t = new Thread(r);
    t.setDaemon(true);
    return t;
});
Scheduler singleThread = Schedulers.from(exec);

Observable o1 = someObservable.subscribeOn(singleThread);
Observable o2 = someObservable.subscribeOn(singleThread);
Observable o3 = someObservable.subscribeOn(singleThread);

o2.subscribe();
o1.subscribe();
o3.subscribe();

ExecutorService有它的队列,无论谁先订阅,其他人都将留在它的队列中,直到前一个队列完成。

也许我不完全理解你的问题,但是你能解释一下为什么会有一个不同的队列(例如
Observable.merge()
Observable.CombineTest()
)不足以满足你的需要?我试试看,这听起来很有说服力。。。我会让您不断更新这里有一个输入错误…Executors应该是Executors:)ExecutorService exec=Executors.newFixedThreadPool(1,r->{Thread t=new Thread(r);t.setDaemon(true);返回t;});
ExecutorService exec = Executors.newFixedThreadPool(1, r -> {
    Thread t = new Thread(r);
    t.setDaemon(true);
    return t;
});
Scheduler singleThread = Schedulers.from(exec);

Observable o1 = someObservable.subscribeOn(singleThread);
Observable o2 = someObservable.subscribeOn(singleThread);
Observable o3 = someObservable.subscribeOn(singleThread);

o2.subscribe();
o1.subscribe();
o3.subscribe();