//For example, the following statement calculates the average age of all male
//members in parallel:
double average = roster
.filter(p -> p.getGender() == Person.Sex.MALE)
//The following example groups members by gender in parallel:
ConcurrentMap<Person.Sex, List<Person>> byGender =
Parallel computing involves dividing a problem into subproblems, solving those problems simultaneously (in parallel, with each subproblem running in a separate thread), and then combining the results of the solutions to the subproblems.
One difficulty in implementing parallelism in applications that use collections is that collections are not thread-safe, which means that multiple threads cannot manipulate a collection without introducing thread interference or memory consistency errors.
You can execute streams in serial or in parallel. When a stream executes in parallel, the Java runtime partitions the stream into multiple substreams.
When you create a stream, it is always a serial stream unless otherwise specified. To create a parallel stream, invoke the operation Collection.parallelStream. Alternatively, invoke the operationBaseStream.parallel.