}
public synchronized void start(final StartContext context) throws StartException {
final TimeSpec keepAliveSpec = keepAlive;
long keepAliveTime = keepAliveSpec == null ? Long.MAX_VALUE : keepAliveSpec.getUnit().toNanos(keepAliveSpec.getDuration());
QueueExecutor queueExecutor = new QueueExecutor(coreThreads, maxThreads, keepAliveTime, TimeUnit.NANOSECONDS, queueLength, threadFactoryValue.getValue(), blocking, handoffExecutorValue.getOptionalValue());
queueExecutor.setAllowCoreThreadTimeout(allowCoreTimeout);
executor = new ManagedQueueExecutorService(queueExecutor);
}