powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile
36 сообщений из 36, показаны все 2 страниц
Объясните толков что означает слово volatile
    #33741078
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А то нифига не понял зачем оно.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #33741084
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа synchronized на переменную

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #33741090
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть в данный момент работать с переменной может только один поток?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #33741145
Миша Оно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объявление переменной volatile гарантирует, что операция присвоения будет атомарна (это не так для double и long), а так же, что значение переменной не будет кешироваться (актуально для многопроцессорных машин).
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #33741218
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо. Понял.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Объясните толков что означает слово volatile
    #38077547
roibush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кувалдин РоманТипа synchronized на переменную

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================

хм, имхо не совсем правильно.

как считаете вот этот код треадсейф?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class SerialNumberGenerator
{
	private static volatile int serialNumber = 0;
	
	public  static int nextSerialNumber()
	{
		return serialNumber++;
	}



То есть вы уверены, что при попытке более одного одного потока вызвать метод nextSerialNumber() у всех потоков будут разные возвращаемые значения?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077559
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более древних тем про volatile не нашлось?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077567
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roibush,

Странно, только сейчас почему то по rss от ibm пришло http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/ как раз для вас.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.

Все остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077579
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Как на счет byte? :)

maytonВсе остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077581
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Byte Не тестировал. Собственно это была попытка перенести С-шный опыт на Java.
Возможно от этого и не очень удачная.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077645
roibush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczmaytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Как на счет byte? :)

maytonВсе остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.

Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38077871
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roibushBlazkowiczпропущено...

Как на счет byte? :)

пропущено...

При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.

Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)

Есть большая задача(вроде поиска в графе), у которой есть несколько вариантов решения(в глубину в ширину), есть несколько ядер, параллелим задачи на 3, каждая задача смотрит на флаг volatile boolean solved - если фолс - продолжает, если тру - заканчивает. А так вообще примеров миллион, в том числе классические алгоритмы из Art of multiprocessor programming
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38078810
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38078827
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никroibushпропущено...


Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)

Есть большая задача(вроде поиска в графе), у которой есть несколько вариантов решения(в глубину в ширину), есть несколько ядер, параллелим задачи на 3, каждая задача смотрит на флаг volatile boolean solved - если фолс - продолжает, если тру - заканчивает. А так вообще примеров миллион, в том числе классические алгоритмы из Art of multiprocessor programming
О, спасибо, я искал хорошую книжку на эту тему :)
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079186
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesiermayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))
Я-бы сказал точнее. Каждая имплементация JVM знает о своих регистрах.
Но кодить надо исходя из спецификаций JVM а не целевой архитектуры.
Иначе - фэйл.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079373
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesiermayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))

int всегда читался и записывался атомарно, long - да, за две операции
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079895
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Все остальные (int/long) атомарно не обновляются.
Т.е. записывая в одно потоке FFFF а в другом 0000 вы получили FF00?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079902
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079915
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
это проблема видимости а не атомарности
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079918
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmaytonЯ выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
это проблема видимости а не атомарности

точнее нет, все таки атомарности, но не записи отдельного int, а инкремента
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079942
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никзабыл никпропущено...

это проблема видимости а не атомарности

точнее нет, все таки атомарности, но не записи отдельного int, а инкремента
Так что инкремент всё таки атомарен?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079976
Фотография buldozer01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги а как же happens-before ?

Что за чушь вы тут несете ?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079987
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buldozer01Коллеги а как же happens-before ?
Что за чушь вы тут несете ?
Тс-с-с. Мне самому интересно.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38079989
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buldozer01Коллеги а как же happens-before ?

Что за чушь вы тут несете ?
Дай ссылку на конкретную статью. А-то будем еще спорить о терминологии.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080002
Фотография buldozer01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

В гугле забанили ?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080017
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТак что инкремент всё таки атомарен?
При чем тут это? Конечно неатомарен, вы говорили что запись инта -неатомарна, вот и все дела.

При чем тут happens-before тоже непонятно. Создается впечатление, что каждый спорит о своем.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне неинтересно читать тезисы из гугла. Это чистой воды софистика.
Вы-же не знаете какую я статью там найду. Верно? А гугл персонализиурет
поиск.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080069
Фотография buldozer01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080073
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buldozer01 http://shipilev.net/pub/talks/j1-April2012-jmm.pdf
и что? бульдозер такой бульдозер...
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080075
Фотография buldozer01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

и то - читаем изучаем
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080081
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buldozer01забыл ник,

и то - читаем изучаем

Как это к треду относится? В частности к моему разговору с мэйтоном?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080083
Фотография buldozer01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

Ты походу не только ник забыл но еще и находишься в состоянии легкого бреда.

Чел попросил меня статью - я скинул - причем тут ты вообще
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38080118
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buldozer01Коллеги а как же happens-before ?

Что за чушь вы тут несете ?
Ок, мне кажется из нас двоих, бармадюк тут ты?
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38081518
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДай ссылку на конкретную статью. А-то будем еще спорить о терминологии.
Читайте выше айбиэмовскую. Там как раз про это.

Нету операции инкримент. Есть считать память в регистр->изменить регистр->записать регистр в память.
Если каждая по отдельности атомарна, то это не значит, что их совокупность атомарна.
...
Рейтинг: 0 / 0
Объясните толков что означает слово volatile
    #38081550
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никПри чем тут happens-before тоже непонятно.
Он здесь до кучи. Еще одни грабли, вызванные тем, что современные процы иногда могут делать out of order excecution.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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