Если вы объявляете переменную-член как изменчивую в Java, означает ли это, что все данные объекта хранятся в энергозависимой памяти или что ссылка на объект хранится в энергозависимой памяти?Объявление объекта как изменчивого
Например, если у меня есть следующий класс:
class C{
int i = 0;
char c = 'c';
}
Если я объявить экземпляр этого следующим образом:
private volatile C obj;
делает, которые хранят ссылку на obj
в энергозависимой памяти, или obj
(obj.i
и obj.c
) в volatile
памяти?
Это делает obj.c
и obj.i
нить безопасной или нет?
Учебное пособие по Java SE 6 не указывает ключевое слово 'volatile' как хранилище в энергозависимой памяти, но гарантирует, что чтение и запись являются атомарными. http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html – gerrytan
Все переменные хранятся в энергозависимой памяти (т. е. ОЗУ) независимо от модификатора 'volatile'. http://en.wikipedia.org/wiki/Volatile_memory –
@gerrytan volatile - это не столько атомарность, сколько видимость. – assylias