Влияние нескольких записей на изменчивую переменную в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Влияние нескольких записей на изменчивую переменную в Java

Сообщение Anonymous »

Я нашел на этом сайте несколько интересных вопросов (например, этот) об эффектах видимости летучих переменных в Java, взятых из этого абзаца, взятого из книги «Параллелизм Java на практике»:

Эффект видимости изменчивых переменных выходит за рамки значения самой изменчивой переменной. Когда поток A записывает в изменчивую переменную, а затем поток B читает ту же самую переменную, значения всех переменных, которые были видимы для A до записи в изменчивую переменную, становятся видимыми для B после чтения изменчивой переменной. Таким образом, с точки зрения видимости памяти запись энергозависимой переменной аналогична выходу из синхронизированного блока, а чтение энергозависимой переменной похоже на вход в синхронизированный блок.

Существует , однако сценарий, который мне не совсем ясен даже после прочтения ответов на соответствующие вопросы на этом сайте, а именно:
  • Каковы будут последствия поток A0 записывает в ту же переменную переменную перед потоком A?
Другими словами: A0 записывает летучий , это значение позже перезаписывается A (который не читает переменную), а затем читается B, поэтому у нас есть две операции записи из разных темы ( и A) и операцию чтения из третьего потока ().
Могу ли я с уверенностью предположить, что и A, и B гарантированно увидят все, что было видно A0 до того, как A0 записал переменную переменную?

ОБНОВЛЕНИЕ
Это концептуальный вопрос о модели памяти Java.
Я знаю, что не может предсказать порядок, в котором запись в изменчивую переменную происходит в потоках A0 и A и чтение в потоке B.
Однако просто для облегчения обсуждения предположим, что A0 запускается за много времени до того, как это сделает A, и еще через значительное время запускается B, и давайте сделаем упрощающее предположение, что этого достаточно, чтобы гарантировать, что запись и чтение происходят в описанном порядке (я знаю, что порядок не может быть гарантирован только по времени, это всего лишь упрощение, чтобы не отклоняться от исходного вопроса).

Подробнее здесь: https://stackoverflow.com/questions/281 ... le-in-java
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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