2017-02-21 16 views
0

Известно, что «чтение/запись в» нелетучих длинных и двойных переменных может быть неатомным. Это касается статических и нестатических полей и массивов.Чтение и запись длинных и двойных локальных переменных в Java

А как насчет соответствующих длинных/двойных локальных переменных. Они атомарны или нет.

+1

Локальная переменная не собирается делиться между несколькими потоками. –

+0

Если они локальные, почему вас интересует атомарность? Локальные переменные недоступны другим потокам. – sparik

+0

В общем, у вас возникают проблемы, потому что чтение письма длинным и двойным не является атомарным. Если вы используете локальные переменные, к которым обращается только один поток, это не должно быть проблемой. Возможно, дубликат: http://stackoverflow.com/questions/517532/writing-long-and-double-is-not-atomic-in-java – Supahupe

ответ

1

Примитивные значения никогда не сохраняются в куче, если они отображаются как локальная переменная. Это означает, что они не могут использоваться совместно, поскольку они хранятся в стеке и недоступны для любого другого потока. Изнутри этого потока вам гарантируется последовательная согласованность, что означает, что вы всегда увидите последнее присвоенное значение.