Rx java 如何在rxjava中的另一个线程中运行方法

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()

我使用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());
        });
    }

    @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仅用于补码,multi
subscribeOn()
将不起作用,所有流将在第一个
subscribeOn()
的调度程序上工作。有关详细信息,请参阅本讲座