Was ist in unserem vorigen Beispiel passiert?
Das Problem besteht darin, dass die beiden Anweisungen
x += 1
und
x -= 1
nicht atomar sind.
In einem Thread können wir beispielsweise x += 1 am berechnen sein. Dazu muss zuerst der Wert von x abgerufen werden, bevor der Ausdruch “x + 1” berechnet werden kann.
Nun kann es passieren, dass ein anderer Prozess auch den Wert von x benötigt und abruft, bevor der erste Prozess das Ergebniss der Addition zurückgeschrieben hat.
Die ist eine “race condition”