@Test public void testShutdownNow() throws Exception { ExecutorTaskAgent agent = new ExecutorTaskAgent("testShutdownNow"); LatchRunnable firstTask = new LatchRunnable(); LatchRunnable secondTask = new LatchRunnable(); agent.submit(firstTask); Future<?> secondTaskFuture = agent.submit(secondTask); firstTask.awaitTaskEntry(); assertTrue(secondTaskFuture.isCancelled() == false); List<Runnable> cancelledTasks = agent.shutdownNow(); assertTrue(cancelledTasks.size() == 1); assertTrue(secondTaskFuture.isCancelled() == true); assertTrue(agent.isShutdown()); Thread.sleep(1); assertTrue(agent.isTerminating() == true); assertTrue(agent.isTerminated() == false); firstTask.releaseAll(); agent.awaitTermination(); assertTrue(agent.isShutdown()); assertTrue(agent.isTerminating() == false); assertTrue(agent.isTerminated()); testShutdownNow_Interrupt(); }