如何解决RxJava:当“The Observable Contract”说“happens-before”时,它实际上是什么意思?
Observable 必须以串行方式(而非并行方式)向观察者发出通知。它们可能会从不同的线程发出这些通知,但这些通知之间必须存在正式的happens-before 关系。
当它说“happens-before”时,是否意味着上一个 onNext 通知的所有效果(例如在 Observer.onNext() 方法中更改共享状态),对下一个 onNext 通知将完全可见,就像Java 内存模型中的发生前保证?
阅读Serializedobserver(RxJava version 3.0.11)的源代码后,发现同步代码块中没有调用downstream.onNext(t)方法。那么,我能说答案不是吗?
解决方法
对下一个 onNext 通知完全可见,就像 Java 内存模型中的happens-before 保证一样?
是的。
SerializedObserver [...] 我发现在同步代码块中没有调用下游.onNext(t) 方法。那么,我能说答案不是吗?
仍然是。 synchronized (this) 确保可见性以及只有一个线程将调用 onNext
的属性,因为 emitting
标志。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。