@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(); }
// test that shutdownNow interrupts current task. public void testShutdownNow_Interrupt() throws InterruptedException { ExecutorTaskAgent agent = new ExecutorTaskAgent("testShutdownNow_Interrupt"); LatchRunnable firstTask = new LatchRunnable(false); agent.submit(firstTask); agent.submit(new LatchRunnable()); firstTask.awaitTaskEntry(); List<Runnable> cancelledTasks = agent.shutdownNow(); assertTrue(cancelledTasks.size() == 1); agent.awaitTermination(); }