Я создал экземпляр Subject
в RxJava и вызываю его onNext()
из нескольких потоков:
PublishSubject<String> subject = PublishSubject.create();
//...
subject.onNext("A"); //thread A
subject.onNext("B"); //thread B
В документации RxJava говорится, что:
позаботьтесь о том, чтобы не вызывать его метод
onNext( )
(или другие методы on) из нескольких потоков, так как это может привести к несериализованным вызовам, что нарушает контракт Observable и создает неоднозначность в результирующемSubject
.
- Должен ли я вызывать
toSerialized()
для такогоSubject
, предполагая, что мне все равно, идет ли"A"
до или после"B"
? Чем может помочь сериализация? - Является ли
Subject
потокобезопасным в любом случае, или я сломаю RxJava безtoSerialized()
? - Что такое «Наблюдаемый контракт», о котором упоминается в документации?