1781 |
|
if (w.scanState < 0) { // recheck after write |
1782 |
|
LockSupport.park(this); |
1783 |
|
if ((stat = w.qlock) >= 0 && w.scanState < 0) { |
1784 |
< |
Thread.interrupted(); // clear status |
1785 |
< |
LockSupport.park(this); // retry once |
1784 |
> |
Thread.interrupted(); // clear status and retry once |
1785 |
> |
if ((runState & STOP) != 0) |
1786 |
> |
stat = w.qlock = -1; |
1787 |
> |
else |
1788 |
> |
LockSupport.park(this); |
1789 |
|
} |
1790 |
|
} |
1791 |
|
w.parker = null; |
1828 |
|
int cfg = w.config, idx = cfg & SMASK; |
1829 |
|
long nc = ((UC_MASK & (c - TC_UNIT)) | |
1830 |
|
(SP_MASK & w.stackPred)); |
1831 |
< |
if ((ws = workQueues) != null && |
1831 |
> |
if ((runState & STOP) == 0 && |
1832 |
> |
(ws = workQueues) != null && |
1833 |
|
idx < ws.length && idx >= 0 && ws[idx] == w && |
1834 |
|
U.compareAndSwapLong(this, CTL, c, nc)) { |
1835 |
|
ws[idx] = null; |