--- 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();