Summary
In this chapter, we have talked about data-stream processing, which is different from processing the I/O streams we reviewed in Chapter 5, Strings, Input/Output, and Files. We defined what data streams are, how to process their elements using stream operations, and how to chain (connect) stream operations in a pipeline. We also discussed stream initialization and how to process streams in parallel.
Now, you know how to write code that processes streams of data, as well as create a stream-processing application as a standalone project.
In the next chapter, you will be introduced to the Reactive Manifesto, its purpose, and examples of its implementations. We will discuss the difference between reactive and responsive systems and what asynchronous and non-blocking processing are. We will also talk about Reactive Streams and RxJava.