Joh*_*eff 10 java thread-safety rx-java
我Subject在RxJava中创建了一个实例,并onNext()从多个线程调用它:
PublishSubject<String> subject = PublishSubject.create();
//...
subject.onNext("A"); //thread A
subject.onNext("B"); //thread B
Run Code Online (Sandbox Code Playgroud)
该RxJava文档说:
注意不要
onNext(?)从多个线程调用其方法(或其他方法),因为这可能导致非序列化调用,这违反了Observable合约并在结果中产生歧义Subject.
toSerialized(),Subject假设我不关心是否"A"在之前或之后"B"?序列化将如何帮助?Subject无论如何都是线程安全的还是我会在没有的情况下破坏RxJava toSerialized()?Dav*_*ten 10
我是否必须在这样的主题上调用toSerialized(),假设我不关心"A"是在"B"之前还是之后?
是的,toSerialized()因为应用于主题的所有运算符都假定正在进行上游的正确序列化.如果不发生,流可能会失败或产生意外结果.
无论如何都是主题线程安全还是我会在没有toSerialized()的情况下中断RxJava?
以上回答
文件中提到的"可观察合同"是什么?
Rx Design Guidelines.pdf第4节定义了Observable合同.我认为RxJava文档应该使这更容易被发现,所以我会提出一个问题.
| 归档时间: |
|
| 查看次数: |
2735 次 |
| 最近记录: |