(note that this question is not about CAS, it\'s about the \"May fail spuriously\" Javadoc).
The only difference in the Javadoc between these two methods fr
There is a difference between implementation and specification...
Whilst on a particular implementation there may not be much point in providing different implementations, future implementations perhaps on different hardware may want to. Whether this method carries its weight in the API is debatable.
Also the weak
methods do not have happens-before ordering defined. The non-weak
versions behave like volatile
fields.
Just to play a bit, if your question were
How can weakDoIt fail spuriously if it is implemented exactly like doIt?
here is the answer!
public void doIt() {
a();
}
/**
* May fail spuriously
*/
public void weakDoIt() {
a();
}
void a(){
if(Thread.currentThread().getStackTrace()[2].toString().contains("weakDoIt"))
System.out.println("I will fail spuriously!");
else System.out.println("I won't fail spuriously!");
}