As described in the documentation, a scheduler is something that can schedule a unit of work to be executed now or later. In practice, it means that Schedulers control where the code will actually be executed and usually that means selecting some kind of specific thread.
Most often, Subscribers are used to executing long-running tasks on some background thread so that it wouldn't block the main computation or UI thread. This is especially relevant on Android when all long-running tasks must not be executed on MainThread.
Schedulers can be set with a simple .subscribeOn() call:
Observable.just("First item", "Second item") .subscribeOn(Schedulers.io()) .subscribe();
There are only a few main Schedulers that are commonly used: