private static final Executor createExecutor() {
        ThreadPoolExecutor executor = new ThreadPoolExecutor(100,
                Integer.MAX_VALUE, 1L, TimeUnit.SECONDS,
                new SynchronousQueue<Runnable>(false), threadFactory);
        // Prestart needed, if not all threads will be created by the fist N tasks and hence they might also
        // get the dreaded thread locals initialized even if they will never run.
        // That counters what we we want to achieve with the Q that will prefer thread locality.
        executor.prestartAllCoreThreads();
        return executor;
    }
<p>Provides asynchronous execution of processing chains. Usage:</p>

<pre>
Execution execution = new Execution(chain);
AsyncExecution asyncExecution = new AsyncExecution(execution);
Future&lt;Response&gt; future = asyncExecution.process(request)
try {
    result = future.get(timeout, TimeUnit.milliseconds);
} catch(TimeoutException e) {
    // Handle timeout
}
</pre>

<p>
The request is not thread safe. A clone() must be made for each parallel processing.
</p>

@author bratseth
@see Execution
container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java