powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile
25 сообщений из 36, страница 1 из 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
25 сообщений из 36, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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