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