Addressing the same live-lock issue found in AQS in AQLS and StampedLock

This commit is contained in:
Viktor Klang 2026-06-10 12:21:35 +02:00
parent 70e4bc9708
commit 22d9ce4b6d
2 changed files with 4 additions and 2 deletions

View File

@ -452,7 +452,8 @@ public abstract class AbstractQueuedLongSynchronizer
if (q.status < 0) { // cancelled
if ((s == null ? casTail(q, p) : s.casPrev(q, p)) &&
q.prev == p) {
p.casNext(q, s); // OK if fails
if (s != null)
p.casNext(q, s); // OK if fails
if (p.prev == null)
signalNext(p);
}

View File

@ -1450,7 +1450,8 @@ public class StampedLock implements java.io.Serializable {
if (q.status < 0) { // cancelled
if ((s == null ? casTail(q, p) : s.casPrev(q, p)) &&
q.prev == p) {
p.casNext(q, s); // OK if fails
if (s != null)
p.casNext(q, s); // OK if fails
if (p.prev == null)
signalNext(p);
}