In this chapter, we've learned how to combine
Observable instances, how to create dependencies between them, and how to react to errors. As we've seen in the final example, we are now capable of creating quite complex logic using just
Observable instances and their operators. Adding to that the RxJava modules available on the Internet, we can turn almost every data source into an
The next step is to master Schedulers. They will provide us with the power to handle multi-threading while coding using this reactive style of programming. Java is famous for its concurrency; it is time to add these capabilities of the language to our
Observable chains, doing multiple HTTP requests in parallel (for example). Another new thing we'll learn is how to buffer, throttle, and debounce our data, techniques that come hand-in-hand with real-time data streams.