### Question:
ManagedThreadPoolExecutor extends ThreadPoolExecutor { public void start() { pauseLock.lock(); try { isStopped = false; unpaused.signalAll(); } finally { pauseLock.unlock(); } } ManagedThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
                            long keepAliveTime, TimeUnit unit,
                            BlockingQueue<Runnable> workQueue); void start(); void stop(); boolean isRunning();  }### Answer:
@Test public void retainsTasksUntilStarted() { final int taskCount = 60; final AtomicInteger counter = new AtomicInteger(); ManagedThreadPoolExecutor executor = createExecutor(10); for (int i = 0; i < taskCount; ++i) { executor.execute(counter::incrementAndGet); } executor.start(); Awaitility.await().atMost(2, TimeUnit.SECONDS) .until(() -> counter.get() == taskCount); }