Einfache Frage: garantiert das Java-Speicher-/Synchronisationsmodell atomare Zeigerschreibvorgänge? Das heißt, wenn wir konkurrierenden Threads haben:Schreiben Java-Zeiger atomar?
String shared;
thread1()
{
shared = "a";
}
thread2()
{
shared = "hello world";
}
zur gleichen Zeit gestartet wird, wird shared
immer garantiert null
, "a"
oder "hello world"
sein?
Hinweis: Das von der Referenz referenzierte Objekt ist möglicherweise nicht vollständig initialisiert. Die normale Implementierung von 'String' sollte in Ordnung sein, obwohl die Spezifikation für diese Art von Dingen nicht gut ist. Auch gibt es einige wenige wirklich unveränderliche Arten. Wenn Sie versuchen, sich auf so etwas zu verlassen, tun Sie wahrscheinlich etwas falsch (obwohl das kein guter Grund ist, warum nicht zu verstehen). –