コード例 #1
0
  @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();
  }