### Question:
FixedThreadPoolExecutor extends AbstractExecutorService { @Override @SuppressFBWarnings(value = "NP_NONNULL_PARAM_VIOLATION", justification = "No ThreadPoolExecutor available to pass.") public void execute(Runnable command) { myAddLock.lock(); try { if (myShuttingDown || !myQueue.add(command)) { myHandler.rejectedExecution(command, null); } } finally { myAddLock.unlock(); } } FixedThreadPoolExecutor(int nThreads);  FixedThreadPoolExecutor(int nThreads, NamedThreadFactory factory, SuppressableRejectedExecutionHandler handler);  FixedThreadPoolExecutor(int nThreads, ThreadFactory factory);  FixedThreadPoolExecutor(int nThreads, ThreadFactory factory, BlockingQueue<Runnable> queue);  FixedThreadPoolExecutor(int nThreads, ThreadFactory factory, BlockingQueue<Runnable> queue,
            RejectedExecutionHandler handler); @Override boolean awaitTermination(long timeout, TimeUnit unit); @Override @SuppressFBWarnings(value = "NP_NONNULL_PARAM_VIOLATION", justification = "No ThreadPoolExecutor available to pass.") void execute(Runnable command); BlockingQueue<Runnable> getQueue(); @Override boolean isShutdown(); @Override boolean isTerminated(); @Override void shutdown(); @Override List<Runnable> shutdownNow();  }### Answer:
@Test @Ignore public void testExecute() throws InterruptedException { ThreadFactory factory = new ThreadFactoryImplementation(null); int nThreads = 20; int iterations = 100; double jdkLatency = 0.; double optimizedLatency = 0.; int totalIterations = 0; for (int numTasks = 1; numTasks <= 10000; numTasks *= 5) { totalIterations += iterations; for (int i = 0; i < iterations; i++) { ExecutorService jdkExecutor = Executors.newFixedThreadPool(nThreads, factory); jdkLatency += testExecutor(jdkExecutor, numTasks); jdkExecutor.shutdownNow(); } for (int i = 0; i < iterations; i++) { FixedThreadPoolExecutor optimizedExecutor = new FixedThreadPoolExecutor(nThreads, factory); optimizedLatency += testExecutor(optimizedExecutor, numTasks); optimizedExecutor.shutdownNow(); } } Assert.assertTrue("Average latency for " + FixedThreadPoolExecutor.class.getName() + " was " + (float)(optimizedLatency / totalIterations / 1e6) + " ms, which is slower than " + ThreadPoolExecutor.class.getName() + ", which took " + (float)(jdkLatency / totalIterations / 1e6) + " ms.", jdkLatency > optimizedLatency); }