Java: может ли энергонезависимая переменная быть найдена нулевой, если она создается в своем объявлении - PullRequest
0 голосов
/ 03 марта 2019

Я читал о модели памяти Java и порядке «до и после», который налагает volatile, и о возможном переупорядочении кода, которое может произойти без volatile.Но предположим, что у меня есть класс Fun с энергонезависимым полем, объявленным как private Cake c=new Cake();, а затем в методе Fun (скажем, public void eat() { ... }) я использую c, как если бы он не был нулевым.Я не могу найти ничего в документации или в StackOverflow, где указано, что c гарантированно будет ненулевым, если eat вызывается потоком, отличным от того, который вызвал конструктор Fun.Так правда ли, что нет гарантии? документация , кажется, только гарантирует, что окончательные поля будут видны правильно после завершения конструктора.

Этот вопрос на самом деле больше из-за любопытства, так как я определенно собираюсь использовать volatile дляперед заказом убедитесь, что все правильно.

...