static boolean unsynchronizedSetter(Date expected){
Date newDate = new Date();
AtomicReference<Date> myAtomicReference = Lookup.getAtomicRef();
boolean myStatus = myAtomicReference.compareAndSet(expected, newDate); //CAS
return myStatus;
}
Q: Si 2 fils exécute, quel objet sera enregistrés dans le répertoire de référence atomique?2 fils EFFECTUER myAtomicReference.compareAndSet (attendus, nouvelle date())
Dans une machine multiprocesseur, 2 threads peuvent effectuer le CAS dans le même cycle d'horloge. Supposons qu'ils utilisent tous les deux le même objet myAtomicReference pour faire le CAS, tous les deux utilisent la valeur correcte de "expected", mais ils essaient de mettre en 2 objets distincts, à savoir le 2 newDate. L'un d'eux doit échouer, mais myStatus sera-t-il faux dans ce fil?
Je suppose qu'une implémentation matérielle de CompareAndSwap ferait en sorte que les threads se mettent en file d'attente pour faire leurs mises à jour. Je suppose que même si les deux processeurs exécutent l'instruction CAS dans le même cycle d'horloge, l'un d'eux est probablement retardé.