When we work with Android, we should remember that we have a main thread that is responsible for a user interface. First, it is not a good idea to invoke long-term operations in the main thread, because in that case, a user interface freezes. Secondly, when we invoke a synchronous method, this blocks a thread. Our user interface is unresponsive until a function that is invoked from the main thread returns the result. That is why we should invoke a long-term operation asynchronously, and reactive programming can help us to do just that.
The Mono and Flux classes contain the publishOn and subscribeOn methods that can switch threads when operators are invoked. The subscribeOn method is used to specify a scheduler that produces emitted values, and the publishOn is used to specify a thread scheduler for the downstream of an observable.
Scheduler is an abstraction...