Является ли String s = "foobar" атомарным? - PullRequest
16 голосов
/ 14 сентября 2011

Является ли String s = "foobar"; атомным?

Назначение ссылки на объект должно быть, но я не совсем уверен.

Спасибо.

Ответы [ 2 ]

19 голосов
/ 14 сентября 2011

Да . Все справочные задания являются атомарными в Java.

Просто обратите внимание, что составной оператор, такой как String s = new String("foobar"), не является атомарным, потому что он включает в себя создание объекта, а затем присваивание отдельно.

Также обратите внимание, что «присваивания длинным и двойным переменным не могут быть атомарными», начиная с JLS-17.7

1 голос
/ 14 сентября 2011

Да, но если вас беспокоит состояние гонки, вы должны хотя бы знать о «синхронизированных» методах / блоках.

И обратите внимание, что это не атомарный, потому что он содержит две операции:

String s = string_a + string_b;
...