Как доказать гарантию изменчивой видимости?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как доказать гарантию изменчивой видимости?

Сообщение Anonymous »

Я читаю статью о ключевом слове Java Volatile, у меня есть несколько вопросов. нажмите здесь

Код: Выделить всё

public class SharedObject {

public int counter = 0;

}
Представьте также, что только поток 1 увеличивает переменную counter, но и поток 1, и поток 2 могут время от времени считывать переменную counter.
p>
Если переменная counter не объявлена ​​энергозависимой, нет никакой гарантии, что значение переменной counter будет записано из регистров ЦП обратно в основной память. Это означает, что значение переменной counter в регистре ЦП может не совпадать со значением в основной памяти.
Как проверить, что видимость не может быть гарантирована без энергозависимости?
Как проверить, что видимость не может быть гарантирована без энергозависимости?
p>
Я попытался создать два потока A и B, где A выполняет counter=1 и утверждает counter==1 в потоке B. Счетчик не украшен переменными. Однако утверждения в потоке B всегда успешны. Если утверждение потока B завершается неудачно, это означает, что счетчик == 0 является проблемой видимости, но этого не произошло. Если это нелегко доказать, нужно ли мне использовать Летучие данные для обеспечения видимости при написании программы, в которой один поток пишет в другой поток для чтения?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -guarantee
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»