gpt4 book ai didi

java - RxJava 队列多观察

转载 作者:太空狗 更新时间:2023-10-29 14:44:59 24 4
gpt4 key购买 nike

我有很多 Observable 方法。我想在前面完成后继续下一步。

A类

public Observable<String> method1(){
// complex stuff (10 sec)
}

public Observable<String> method2(){
// another complex stuff (10 sec)
}

B 类

foo.method1().subscribe(...);
foo.method2().subscribe(...);
foo.method1().subscribe(...);
foo.method1().subscribe(...);

我想一个接一个地运行它……最难的那个:我无法更改B 级。我必须改变A级才能实现我的目标。有什么想法吗?

我可以使用 flatMat(...)concatMap(...)B 类 中做到这一点,但我无法更改 < strong>B级

最佳答案

它看起来很糟糕,但应该可以完成工作。信号量将确保只有一个线程在处理数据。请注意,此解决方案不保证操作顺序。

public class  A {

private final Semaphore semaphore = new Semaphore(1);

public Observable<String> method1() {
try {
semaphore.acquire();
// complex stuff (10 sec)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Observable<String> method2() {
try {
semaphore.acquire();
// another complex stuff (10 sec)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

关于java - RxJava 队列多观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com