Повторять массив до определенной длины?

У меня есть массив, например, с 4 элементами array ( "а", "б", После этого я не касаюсь переменной A, она используется только в потоке B. Поэтому блокировка, вероятно, не требуется.

Но гарантируется ли, что основной поток очистит свой кэш и запишет содержимое переменной A в основную память, поэтому второй поток может читать вновь присвоенное значение?

Кроме того, гарантируется ли, что второй поток будет считывать содержимое переменной A из основной памяти? Могут ли произойти некоторые оптимизации компилятора, и Поток B может читать содержимое переменной A из кэша вместо основной памяти? Это может произойти при изменении порядка команд.

Конечно, добавление volatile к объявлению variableA сделает код правильным. Но это необходимо? Я спрашиваю, потому что я написал некоторый код с инициализацией некоторых энергонезависимых переменных в конструкторе, и переменные позже используются некоторыми потоками Timer, и я не уверен, что он полностью правильный.

Как насчет того же кода в Java?

Спасибо, Michal

6
задан Michał Fronczyk 29 August 2010 в 16:56
поделиться