It is possible for an Observable to invoke its observers’ methods asynchronously, perhaps from different threads. This could make such an Observable violate the Observable contract, in that it might try to send an OnCompleted or OnError notification before one of its OnNext notifications, or it might make an OnNext notification from two different threads concurrently. You can force such an Observable to be well-behaved and synchronous by applying the Serialize operator to it.
OnCompleted
OnError
OnNext
serialize
TBD
RxGroovy implements this operator as serialize. It does not by default operate on any particular Scheduler.
serialize()
RxJava implements this operator as serialize. It does not by default operate on any particular Scheduler.
Synchronize
sychronize