NoticeableThreadPoolExecutor extends BaseNoticeableExecutorService { @Override public synchronized List<Runnable> shutdownNow() { _shutdownTasks.addAll(_dispatcherThreadPoolExecutor.shutdownNow()); _workerThreadPoolExecutor.shutdownNow(); List<Runnable> shutdownTasks = new ArrayList<>(_shutdownTasks); _shutdownTasks.clear(); return shutdownTasks; } NoticeableThreadPoolExecutor(
		int corePoolSize, int maximumPoolSize, long keepAliveTime,
		TimeUnit timeUnit, BlockingQueue<Runnable> blockingQueue,
		ThreadFactory threadFactory,
		RejectedExecutionHandler rejectedExecutionHandler,
		ThreadPoolHandler threadPoolHandler); @Override boolean awaitTermination(long timeout, TimeUnit timeUnit); @Override void execute(Runnable runnable); int getActiveCount(); long getCompletedTaskCount(); int getCorePoolSize(); int getLargestPoolSize(); int getMaximumPoolSize(); int getPendingTaskCount(); int getPoolSize(); @Override boolean isShutdown(); @Override boolean isTerminated(); void setCorePoolSize(int corePoolSize); void setMaximumPoolSize(int maximumPoolSize); @Override synchronized void shutdown(); @Override synchronized List<Runnable> shutdownNow(); @Override NoticeableFuture<Void> terminationNoticeableFuture();  }
@Test public void testShutdownNow() throws InterruptedException { _testShutdownNow(false); }