在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中发出的两个项目都在同一个线程中运行