Μια atomic operation ολοκληρώνεται αδιαίρετα — κανένα άλλο thread δεν βλέπει μια μισοτελειωμένη κατάσταση· η memory visibility είναι το αν τα writes ενός thread τα βλέπει ένα άλλο· τα memory barriers επιβάλλουν σειρά ώστε αυτά τα writes να γίνουν ορατά. Τα locks δεν είναι η μόνη έγνοια — είναι το memory model.
Atomicity
Μια atomic λειτουργία (π.χ. fetch_add, compare-and-swap) εκτελείται ως ένα αδιαίρετο βήμα, οπότε κανένα race δεν την διασπά. Το hardware και η γλώσσα παρέχουν atomics για counters και flags χωρίς πλήρες lock.
();
counter.incrementAndGet();
