java - RX Java - subscribeOn 和 observeOn 的不同行为

标签 java rx-java observable

我是 RX java 的新手,我一直在尝试使用 observeOn 和 subscribeOn 方法。我读过它们之间的区别在于它们在设置调度程序(observeOn)后影响整个链(subscribeOn)或仅影响链的一部分。那么为什么下面的代码执行得很好(打印当前线程):

Observable obs = Observable.from(Arrays.asList("element", "2nd element"));
obs.observeOn(Schedulers.newThread())
                .map(x -> x.toString().toUpperCase())
                .subscribe(x -> System.out.println("NT:" + Thread.currentThread().getName() + x));

虽然此代码不打印任何内容:

Observable obs = Observable.from(Arrays.asList("element", "2nd element"));
obs.subscribeOn(Schedulers.newThread())
            .map(x -> x.toString().toUpperCase())
            .subscribe(x -> System.out.println("NT:" + Thread.currentThread().getName() + x));

最佳答案

您确定此代码不打印任何内容吗?

我试过这段代码:

Observable obs = Observable.from(Arrays.asList("element", "2nd element"));
obs.subscribeOn(Schedulers.newThread())
  .map(x -> x.toString().toUpperCase())
  .subscribe(x -> System.out.println("NT:" + Thread.currentThread().getName() + x));

Thread.sleep(5000);

输出:

NT:RxNewThreadScheduler-1ELEMENT
NT:RxNewThreadScheduler-12ND ELEMENT

也许你忘记了sleep或者做一些其他的工作让应用程序等待新的RxJava线程的完成?

关于java - RX Java - subscribeOn 和 observeOn 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51280900/

相关文章:

java - Jdeveloper 未采用最新的编译文件

java - EntityManager 注入(inject)良好实践

java - Hibernate搜索结果排名

java - rxjava中的后台任务队列

android - 使用 RxJava 延迟获取分页对象

angular - 响应式(Reactive)表单 valueChanges observable 重置表单值

Angular,错误拦截器,在不同的 url 上重试原始请求

java - 为什么这么多人使用 me.projectname.main 作为包路径?

java - 如何在 if block 内重构 Single/Observable 的公共(public)映射

javascript - RXJS Observable 数组的简单过滤器