Rx java 如何在rxjava中的另一个线程中运行方法
我使用Rxjava2编写了以下代码:Rx java 如何在rxjava中的另一个线程中运行方法,rx-java,rx-java2,Rx Java,Rx Java2,我使用Rxjava2编写了以下代码: public class RxSchTest { public Observable<String> validate(String str){ return Observable.create(s->{ s.onNext(str+":v1"); System.out.println("run on threads "+Thread.currentThread()
public class RxSchTest {
public Observable<String> validate(String str){
return Observable.create(s->{
s.onNext(str+":v1");
System.out.println("run on threads "+Thread.currentThread());
});
}
@Test
public void testbackRun(){
// Observable<String>
for(int i =0;i<10;i++) {
validate("test"+i).observeOn(Schedulers.io()).subscribe(System.out::println);
}
}
}
公共类RxSchTest{
公共可观察验证(字符串str){
返回可观察。创建(s->{
s、 onNext(str+“:v1”);
System.out.println(“在线程上运行”+Thread.currentThread());
});
}
@试验
公共void testbackRun(){
//可观察
对于(int i=0;i您在默认(主)线程上创建Observable
,并在将线程切换到io
之后创建。因此,只有订阅者在io
上打印。请记住,observeOn
操作员切换下游线程
如果您需要在io
上订阅您的observed
,请使用subscribebeon
操作符,而不是observeOn
@Test
public void testbackRun(){
for(int i =0;i<10;i++) {
validate("test"+i)
.subscribeOn(Schedulers.io()) <---------------
.subscribe(System.out::println);
}
}
@测试
公共void testbackRun(){
对于(int i=0;i仅用于补码,multisubscribeOn()
将不起作用,所有流将在第一个subscribeOn()
的调度程序上工作。有关详细信息,请参阅本讲座