Beispiel #1
0
  /**
   * After invoking a single task, isQuiescent eventually becomes true, at which time queues are
   * empty, threads are not active, the task has completed successfully, and construction parameters
   * continue to hold
   */
  public void testIsQuiescent() throws Exception {
    ForkJoinPool p = new ForkJoinPool(2);
    try (PoolCleaner cleaner = cleaner(p)) {
      assertTrue(p.isQuiescent());
      long startTime = System.nanoTime();
      FibTask f = new FibTask(20);
      p.invoke(f);
      assertSame(ForkJoinPool.defaultForkJoinWorkerThreadFactory, p.getFactory());
      while (!p.isQuiescent()) {
        if (millisElapsedSince(startTime) > LONG_DELAY_MS)
          throw new AssertionFailedError("timed out");
        assertFalse(p.getAsyncMode());
        assertFalse(p.isShutdown());
        assertFalse(p.isTerminating());
        assertFalse(p.isTerminated());
        Thread.yield();
      }

      assertTrue(p.isQuiescent());
      assertFalse(p.getAsyncMode());
      assertEquals(0, p.getQueuedTaskCount());
      assertEquals(0, p.getQueuedSubmissionCount());
      assertFalse(p.hasQueuedSubmissions());
      while (p.getActiveThreadCount() != 0 && millisElapsedSince(startTime) < LONG_DELAY_MS)
        Thread.yield();
      assertFalse(p.isShutdown());
      assertFalse(p.isTerminating());
      assertFalse(p.isTerminated());
      assertTrue(f.isDone());
      assertEquals(6765, (int) f.get());
      assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS);
    }
  }
Beispiel #2
0
 /** A task submitted after shutdown is rejected */
 public void testSubmitAfterShutdown() {
   ForkJoinPool p = new ForkJoinPool(1);
   try (PoolCleaner cleaner = cleaner(p)) {
     p.shutdown();
     assertTrue(p.isShutdown());
     try {
       ForkJoinTask<Integer> f = p.submit(new FibTask(8));
       shouldThrow();
     } catch (RejectedExecutionException success) {
     }
   }
 }
Beispiel #3
0
 /**
  * Successfully constructed pool reports default factory, parallelism and async mode policies, no
  * active threads or tasks, and quiescent running state.
  */
 public void testDefaultInitialState() {
   ForkJoinPool p = new ForkJoinPool(1);
   try (PoolCleaner cleaner = cleaner(p)) {
     assertSame(ForkJoinPool.defaultForkJoinWorkerThreadFactory, p.getFactory());
     assertFalse(p.getAsyncMode());
     assertEquals(0, p.getActiveThreadCount());
     assertEquals(0, p.getStealCount());
     assertEquals(0, p.getQueuedTaskCount());
     assertEquals(0, p.getQueuedSubmissionCount());
     assertFalse(p.hasQueuedSubmissions());
     assertFalse(p.isShutdown());
     assertFalse(p.isTerminating());
     assertFalse(p.isTerminated());
   }
 }