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