As a quick answer, in .NET (the original Rx implementation) all values from an observable sequence can be assumed to be sequential. This does not preclude it to be multi-threaded. However if you are producing values in a multi-threaded manner, then you may want enforce the sequential nature by looking for the equivalent function to the .NET Synchronize()
Rx operator.
Another option is to check the implementation of Scan
in the RxJava source code, to validate that it does enforce the sequential nature you would want/expect to provide you safety in your accumulator function.