751 |
|
|
752 |
|
// status check methods used mainly by ForkJoinPool |
753 |
|
final boolean isRunning() { return runState == 0; } |
754 |
– |
final boolean isTerminating() { return (runState & TERMINATING) != 0; } |
754 |
|
final boolean isTerminated() { return (runState & TERMINATED) != 0; } |
755 |
|
final boolean isSuspended() { return (runState & SUSPENDED) != 0; } |
756 |
|
final boolean isTrimmed() { return (runState & TRIMMED) != 0; } |
757 |
|
|
758 |
+ |
final boolean isTerminating() { |
759 |
+ |
if ((runState & TERMINATING) != 0) |
760 |
+ |
return true; |
761 |
+ |
if (pool.isAtLeastTerminating()) { // propagate pool state |
762 |
+ |
shutdown(); |
763 |
+ |
return true; |
764 |
+ |
} |
765 |
+ |
return false; |
766 |
+ |
} |
767 |
+ |
|
768 |
|
/** |
769 |
|
* Sets state to TERMINATING. Does NOT unpark or interrupt |
770 |
|
* to wake up if currently blocked. Callers must do so if desired. |