Предотвращает ли создание поля `volatile` все проблемы с видимостью памяти в параллельной ситуации?

Делает ли поле класса изменчивым предотвращает все проблемы видимости памяти с это в параллельной ситуации? Возможно ли, что для нижнего класса поток, который получает ссылку на объект Test , сначала видит x как 0 (значение по умолчанию int ), а затем 10? Я думаю, что это возможно тогда и только тогда, когда Конструктор Test выдаст эту ссылку без завершения (неправильная публикация). Может ли кто-нибудь проверить / исправить меня?

class Test {
    volatile int x = 10;            
}

Второй вопрос: что, если бы это было final int x = 10; ?

6
задан Gray 19 July 2012 в 17:22
поделиться