Welche Operationen in Java gelten als atomar?
java
multithreading
atomicity
Robinmag
quelle
quelle
volatile
Longs und Doubles sind garantiert atomar: java.sun.com/docs/books/jls/third_edition/html/memory.html#17.764 bit jvm, long and double assignments are also atomic.
Bist du sicher? Ich würde sagen, sie sind für kompilierten Code, aber was ist mit interpretiertem Code? Wahrscheinlich hast du recht, aber gibt es eine Garantie?In Java ist das Lesen und Schreiben von 32-Bit- oder kleineren Mengen garantiert atomar.
Mit atomar ist gemeint, dass jede Aktion in einem Schritt stattfindet und nicht unterbrochen werden kann. Wenn wir also Multithread-Anwendungen haben, sind die Lese- und Schreibvorgänge threadsicher und müssen nicht synchronisiert werden.
Der folgende Code ist beispielsweise threadsicher:
quelle
Es scheint, dass Zuweisungen von Longs atomar sind, basierend auf dieser Methode in AtomicLong.java:
Beachten Sie das Fehlen einer Synchronisation.
quelle
value
. Es istvolatile
.value
heißtvolatile
, die Zuordnung vonvalue
Atomic wird nicht vorgenommen, sondern lediglich "Veröffentlichungsprobleme" vermieden.