In the blockingCodeHandler the current context remains the original context and therefore any task
scheduled in the blockingCodeHandler will be executed on the this context and not on the worker thread.

Type Parameters:

T - the type of the result

Parameters:

blockingCodeHandler - handler representing the blocking code to run

resultHandler - handler that will be called when the blocking code is complete

ordered - if true then if executeBlocking is called several times on the same context, the executions
for that context will be executed serially, not in parallel. if false then they will be no ordering
guarantees

createSharedWorkerExecutor

Create a named worker executor, the executor should be closed when it's not needed anymore to release
resources.

This method can be called mutiple times with the same name. Executors with the same name will share
the same worker pool. The worker pool size and max execute time are set when the worker pool is created and
won't change after.

The worker pool is released when all the WorkerExecutor sharing the same name are closed.