.
Laziz Karimov
1 уровень
Наверное вопрос будет казаться глупым. Прочитал про volatile переменные и пришел к тому что хранятнся они во внутренней памяти(HDD) и то что нет возможности их изменять. Во время прочтения вспомнил о глобальных константах. Так вот скажите, в чем их разница и могу ли вместо volatile использовать их?
Решен
volatileэто модификатор доступа, позволяющий добиваться некоторого порядка видимости операций доступа (чтения-записи) к полям объектов в многопоточной среде. Модификатор доступаfinalтоже даёт эффекты в упорядочении видимости операций доступа, но у него своя, отдельная семантика в модели памяти. Суть в том, что эти модификаторы - дают совершенно разные эффекты, и созданы для разных целей. Особо хочу отметить то, что Java-программист работает на уровне абстракций заданных спецификацией языка Java (JLS). Как именно реализуются эти спецификации, в идеальной ситуации, судить не следует, так как это нарушение слоёв абстракций. К сожалению, идеальная ситуация недостижима, и на практике всё же приходится использовать некоторые приёмы, вроде обнуления указателей на неиспользуемые объекты, и избегания встроенных в язык средств блокировки потоков, но это всегда риск, так как всё это зависит от текущей реализации используемой виртуальной Java-машины. Пропатчат реализацию, или сменят используемую jvm, и все эти приёмы могут оказаться бесполезны, или даже стать вредны.volatile-переменные нельзя изменять? И что такое глобальные константы, и как их можно использовать вместо переменных?