Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Rxjava中创建线程_Java_Multithreading_Rx Java_Rx Java2 - Fatal编程技术网

在Rxjava中创建线程

在Rxjava中创建线程,java,multithreading,rx-java,rx-java2,Java,Multithreading,Rx Java,Rx Java2,我正在just()运算符中传递两个参数。我的代码片段是: Observable<Integer> observable = Observable.just(1,2); observable.subscribeOn(Schedulers.newThread()) .subscribe( new Observer<Integer>() {

我正在
just()
运算符中传递两个参数。我的代码片段是:

Observable<Integer> observable = Observable.just(1,2);
observable.subscribeOn(Schedulers.newThread())
                        .subscribe(
                                new Observer<Integer>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {

                                    }

                                    @Override
                                    public void onError(Throwable e) {

                                    }

                                    @Override
                                    public void onComplete() {

                                    }

                                    @Override
                                    public void onNext(Integer e) {
                                        System.out.println(e);
                                        //request web service

                                });
Observable-Observable=Observable.just(1,2);
observable.subscribeOn(Schedulers.newThread())
.订阅(
新观察员(){
@凌驾
认购的公共无效(一次性d){
}
@凌驾
公共无效申报人(可丢弃的e){
}
@凌驾
未完成的公共空间(){
}
@凌驾
public void onNext(整数e){
系统输出打印ln(e);
//请求web服务
});

我观察到的是,它没有为每个发出的项创建单独的线程。显示为
的项只是
参数的项按顺序运行。如何为每个发出的项创建单独的线程?

您可以使用flatMap,在flatMap中创建新的可观察项并使用subscribeOn

@Test
public void test() {
    Observable.just(1, 2)
            .flatMap(item -> Observable.just(item)
                    .subscribeOn(Schedulers.newThread())
                    .doOnNext(i -> System.out.println("Thread:" + Thread.currentThread())))
            .subscribe(System.out::println);
}

你可以在这里看到更多关于async observable的例子

谢谢@paul。它起作用了。但是为什么我以前的方法不起作用呢?因为你没有用observable.Subscribe创建一个新的observable,所以在该observable中发出的两个项目都在同一个线程中运行