Java Parallel Streams divide a running process into multiple streams that execute in parallel on separate cores, returning a combined result of all the individual outcomes.
Parallelism is the act of splitting tasks into smaller subtasks and processing those subtasks in parallel, for instance across multiple CPUs at the exact same time.
A Java Stream is used to process a collection of objects which can be pipelined to produce a desired result.
The Executor framework implements thread pooling through an Executor
interface.
Concurrency is the act of processing more than one task at seemingly the same time on the same CPU, requiring the ability to switch between tasks.
Memory consistency errors occur when different threads have inconsistent views of what should be the same data.
The Fork-Join framework uses ForkJoinPool
to distribute a task across several worker threads and then wait for a result.
Thread interference can occur when one thread overwrites the results of another thread in an unpredictable way, which can cause unexpected results when reading the altered data.
A thread pool manages a pool of worker threads which connect to a work queue of Runnable
tasks waiting to be executed.