Book Image

Mastering Concurrency Programming with Java 9, Second Edition - Second Edition

By : Javier Fernández González
Book Image

Mastering Concurrency Programming with Java 9, Second Edition - Second Edition

By: Javier Fernández González

Overview of this book

Concurrency programming allows several large tasks to be divided into smaller sub-tasks, which are further processed as individual tasks that run in parallel. Java 9 includes a comprehensive API with lots of ready-to-use components for easily implementing powerful concurrency applications, but with high flexibility so you can adapt these components to your needs. The book starts with a full description of the design principles of concurrent applications and explains how to parallelize a sequential algorithm. You will then be introduced to Threads and Runnables, which are an integral part of Java 9's concurrency API. You will see how to use all the components of the Java concurrency API, from the basics to the most advanced techniques, and will implement them in powerful real-world concurrency applications. The book ends with a detailed description of the tools and techniques you can use to test a concurrent Java application, along with a brief insight into other concurrency mechanisms in JVM.
Table of Contents (14 chapters)

An introduction to streams


A stream is a sequence of data (is not a data structure) that allows you to apply a sequence of operations in a sequential or concurrent way to filter, convert, sort, reduce, or organize those elements to obtain a final object. For example, if you have a stream with the data of your employees, you can use a stream to:

  • Count the total number of employees (this is an expensive terminal operation)
  • Calculate the average salary of all employees who live in a particular place
  • Obtain a list of the employees who haven't met their objectives
  • Any operation that implies work with all or some of the employees

Streams are greatly influenced by functional programming (the Scala programming language provides a very similar mechanism), and work with lambda expressions. Stream API resembles LINQ (short for Language-Integrated Query) queries available in C# language and, to some extent, could be compared with SQL queries.

In the following sections, we will explain the basic characteristics...