Ideally, `execute` should return a future, that can then be composed in other parts of the code. However, there were no futures in the stdlib at the time that parallel collections were implemented.

However, this is just a fallback executor for those few poor souls not using `ForkJoinPool`s, and this method is in almost all cases used where blocking is expected (parallel collections default semantics are to wait until the operation completes - they are bulk-synchronous).