Является ли String s = "foobar" атомом?
Является String s = "foobar";
атомным?
Назначение объектной ссылки должно быть, но я не уверен.
Спасибо.
Ответы
Ответ 1
Да. Все ссылочные назначения являются атомарными в java.
Просто обратите внимание, что составной оператор, такой как String s = new String("foobar")
, не является атомарным, поскольку он содержит создание объекта, а затем назначение отдельно.
Также обратите внимание, что "присваивания длинным и двойным переменным могут быть не атомарными", из JLS-17.7
Ответ 2
Да, но если вы беспокоитесь о гоночных условиях, вы должны хотя бы знать о "синхронизированных" методах/блоках.
И обратите внимание, что это не атомно, потому что он содержит две операции:
String s = string_a + string_b;