Fix semantic of DefaultAttribute impl on setIfAbsent
This commit is contained in:
parent
2d9cc9f63b
commit
2ad1451ce8
@ -51,12 +51,14 @@ public class DefaultAttributeMap implements AttributeMap {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T setIfAbsent(T value) {
|
public T setIfAbsent(T value) {
|
||||||
if (compareAndSet(null, value)) {
|
while (!compareAndSet(null, value)) {
|
||||||
return null;
|
T old = get();
|
||||||
} else {
|
if (old != null) {
|
||||||
return get();
|
return old;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
|
Loading…
Reference in New Issue
Block a user