?
[ ] , , Java CAS.
, , , CAS, . Wikipedia :
, , , . , ;
...
, .
CAS [ , , CAS while]:
1: CAS? , CAS. , . , , , .
: CAS ? , "" , , ( ).
CAS, Java, AtomicXXX CAS . , - JVM:
public class Entity {
static {
new Thread(){
@Override
public void run() {
synchronized (getClass().getClassLoader()){
try {
getClass().getClassLoader().wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
AtomicReference v = new AtomicReference(new Object());
Object var = null;
Object somenew;
do {
var = v.get();
somenew = new Object();
} while(!v.compareAndSet(var, somenew));
}
}
, main(), , - , , . , , , ? , cas-lock Java - , cas, .
CAS
CAS . , , , . , , CAS.
Wikipedia quote:
Compare-and-Swap ( Compare-and-Swap-Double) IBM 370 ( ) 1970 .
2013 , CAS .
JDK:
AtomicInteger.compareAndSet() Javadoc :
, value == .
AtomicXXX, , .
AtomicStampedReference.compareAndSet(). Javadoc :
, == , .
, javadoc , , , , , CAS.