Ich sehe, wie Java AtomicInteger intern mit CAS (Compare And Swap) -Operation arbeitet. Wenn mehrere Threads versuchen, den Wert zu aktualisieren, verwendet JVM grundsätzlich den zugrunde liegenden CAS-Mechanismus und versucht, den Wert zu aktualisieren. Wenn das Update fehlschlägt, versuchen Sie es erneut mit dem neuen Wert, aber blockieren Sie nie.Wie funktioniert LongAdder besser als AtomicLong
In Java8 führte Oracle eine neue Klasse LongAdder ein, die unter hohen Ansprüchen besser abschneidet als AtomicInteger. Einige Blog-Posts behaupten, dass LongAdder bessere Leistung bringt, indem sie interne Zellen pflegen - Bedeutet das, dass LongAdder die Werte intern aggregiert und später aktualisiert? Könnten Sie mir bitte helfen zu verstehen, wie LongAdder funktioniert?
http://stackoverflow.com/questions/27628538/multithreading-summing-large-number-of-values-atomically/27628873#27628873 – sol4me
Zuerst Ich glaube, ich Sie falsch verstanden. Ich habe deine Frage noch einmal gelesen, ich denke du hast die Idee richtig verstanden. – aioobe
Danke! Ich bin mehr daran interessiert zu verstehen, wie diese internen Zellen organisiert sind? Sagen Sie, wenn 100 Threads versuchen, den Wert zu aktualisieren, wie viele interne Zellen erstellt und wie sie aktualisiert werden? – Sathish