微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RxJava:当“The Observable Contract”说“happens-before”时,它实际上是什么意思?

如何解决RxJava:当“The Observable Contract”说“happens-before”时,它实际上是什么意思?

The Observable Contract

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 举报,一经查实,本站将立刻删除。