Focusing on data instead of processes helps a great deal to create robust concurrent programs. You as a programmer
define your data together with functions that should be applied to it and then let the underlying machinery to process the data.
Typically a set of concurrent tasks will be created and then they will be submitted to a thread pool for processing.

In *GPars* the _GParsPool_ and _GParsExecutorsPool_ classes give you access to low-level data parallelism techniques.
While the _GParsPool_ class relies on the jsr-166y Fork/Join framework and so offers greater functionality and better performance,
the _GParsExecutorsPool_ uses good old Java executors and so is easier to setup in a managed or restricted environment.

There are three fundamental domains covered by the GPars low-level data parallelism:
# Processing collections concurrently
# Running functions (closures) asynchronously
# Performing Fork/Join (Divide/Conquer) algorithms

