src/java.base/share/classes/java/util/concurrent/ThreadPoolExecutor.java
changeset 54684 c277ec29ee12
parent 48842 a5a2e4770524
child 58657 6252605fb005
--- a/src/java.base/share/classes/java/util/concurrent/ThreadPoolExecutor.java	Thu May 02 06:33:28 2019 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ThreadPoolExecutor.java	Thu May 02 06:33:28 2019 -0700
@@ -922,13 +922,13 @@
 
                     if (isRunning(c) ||
                         (runStateLessThan(c, STOP) && firstTask == null)) {
-                        if (t.isAlive()) // precheck that t is startable
+                        if (t.getState() != Thread.State.NEW)
                             throw new IllegalThreadStateException();
                         workers.add(w);
+                        workerAdded = true;
                         int s = workers.size();
                         if (s > largestPoolSize)
                             largestPoolSize = s;
-                        workerAdded = true;
                     }
                 } finally {
                     mainLock.unlock();