class CachedThreadPoolExecutorFactory implements ExecutorFactory {

    @Override
    public ExecutorService create( int corePoolSize, int maxPoolSize, Duration keepAlive, int queueSize, boolean startCoreThreads, ThreadFactory threadFactory )
    {
        ThreadPool result = new ThreadPool( corePoolSize, maxPoolSize, keepAlive, createTaskQueue( queueSize ), threadFactory, rejectionHandler );

        if ( startCoreThreads )
        {
            result.prestartAllCoreThreads();
        }

        return result;
    }

    public  CachedThreadPoolExecutorFactory( Log log );
    public  CachedThreadPoolExecutorFactory( Log log, RejectedExecutionHandler rejectionHandler );

}