powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Модификатор volatile
4 сообщений из 4, страница 1 из 1
Модификатор volatile
    #34770515
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер всем.
Позвольте еще уточнить такой вопрос.
Правильно ли я понимаю назначение модификатора volatile , предположим есть некий класс, объект которого выполняется в многопоточном контексте:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  Test {

      volatile   int  counter;


      public   void  foo() {
             int  a = counter;        // (1)

            ///... промежуточные действия метода, не изменяющие поле counter
           
             int  b = counter;        // (2)
     }
}

то если потоки изменяют поле counter, то во время выполнения метода foo можно получить в разных его местах разные значения переменной counter. Если бы переменная counter не была бы volatile, то на время выполнения метода foo она бы оставалась неизменной (тоесть бралась из кеша)
?
...
Рейтинг: 0 / 0
Модификатор volatile
    #34770516
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageто если потоки изменяют поле counter, то во время выполнения метода foo можно получить в разных его местах разные значения переменной counter.

в разных местах - имеется ввиду точки (1) и (2) в коде.
...
Рейтинг: 0 / 0
Модификатор volatile
    #34770525
четай jsr 133
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unicornmirageЕсли бы переменная counter не была бы volatile, то никаких гарантий нет .
...
Рейтинг: 0 / 0
Модификатор volatile
    #34771040
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage unicornmirageто если потоки изменяют поле counter, то во время выполнения метода foo можно получить в разных его местах разные значения переменной counter.

в разных местах - имеется ввиду точки (1) и (2) в коде.
Если не объявлять volatile, то можно получить старое (кешированное) значение, даже несмотря на то что в промежуток между (1) и (2) оно изменилось.
Внятный пример см в доке
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Модификатор volatile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]