Print this page


Split Close
Expand all
Collapse all
          --- old/test/java/util/concurrent/ThreadPoolExecutor/ShutdownNowExecuteRace.java
          +++ new/test/java/util/concurrent/ThreadPoolExecutor/ShutdownNowExecuteRace.java
↓ open down ↓ 32 lines elided ↑ open up ↑
  33   33  // add a call to Thread.yield() before the call to t.start()
  34   34  // in ThreadPoolExecutor.addWorker.
  35   35  
  36   36  import java.util.*;
  37   37  import java.util.concurrent.*;
  38   38  
  39   39  public class ShutdownNowExecuteRace {
  40   40      static volatile boolean quit = false;
  41   41      static volatile ThreadPoolExecutor pool = null;
  42   42  
  43      -    final static Runnable sleeper = new Runnable() { public void run() {
       43 +    static final Runnable sleeper = new Runnable() { public void run() {
  44   44          final long ONE_HOUR = 1000L * 60L * 60L;
  45   45          try { Thread.sleep(ONE_HOUR); }
  46   46          catch (InterruptedException ie) {}
  47   47          catch (Throwable t) { unexpected(t); }}};
  48   48  
  49   49      static void realMain(String[] args) throws Throwable {
  50   50          final int iterations = 1 << 8;
  51   51          Thread thread = new Thread() { public void run() {
  52   52              while (! quit) {
  53   53                  ThreadPoolExecutor pool = ShutdownNowExecuteRace.pool;
↓ open down ↓ 20 lines elided ↑ open up ↑
  74   74      static void fail(String msg) {System.out.println(msg); fail();}
  75   75      static void unexpected(Throwable t) {failed++; t.printStackTrace();}
  76   76      static void check(boolean cond) {if (cond) pass(); else fail();}
  77   77      static void equal(Object x, Object y) {
  78   78          if (x == null ? y == null : x.equals(y)) pass();
  79   79          else fail(x + " not equal to " + y);}
  80   80      public static void main(String[] args) throws Throwable {
  81   81          try {realMain(args);} catch (Throwable t) {unexpected(t);}
  82   82          System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
  83   83          if (failed > 0) throw new AssertionError("Some tests failed");}
  84      -    private static abstract class Fun {abstract void f() throws Throwable;}
       84 +    private abstract static class Fun {abstract void f() throws Throwable;}
  85   85      static void THROWS(Class<? extends Throwable> k, Fun... fs) {
  86   86          for (Fun f : fs)
  87   87              try { f.f(); fail("Expected " + k.getName() + " not thrown"); }
  88   88              catch (Throwable t) {
  89   89                  if (k.isAssignableFrom(t.getClass())) pass();
  90   90                  else unexpected(t);}}
  91      -    private static abstract class CheckedThread extends Thread {
       91 +    private abstract static class CheckedThread extends Thread {
  92   92          abstract void realRun() throws Throwable;
  93   93          public void run() {
  94   94              try {realRun();} catch (Throwable t) {unexpected(t);}}}
  95   95  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX