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