Nếu bạn khai báo biến thành viên là biến động trong Java, điều này có nghĩa là tất cả dữ liệu của đối tượng được lưu trữ trong bộ nhớ dễ bay hơi, hoặc tham chiếu đến đối tượng được lưu trữ trong bộ nhớ dễ bay hơi?Khai báo một đối tượng dễ bay hơi
Ví dụ nếu tôi có lớp sau:
class C{
int i = 0;
char c = 'c';
}
Nếu tôi tuyên bố một thể hiện của nó như sau:
private volatile C obj;
nào đó lưu trữ các tài liệu tham khảo để obj
trong bộ nhớ không ổn định, hoặc obj
Dữ liệu của (obj.i
và obj.c
) trong bộ nhớ volatile
?
Nó có làm cho an toàn obj.c
và obj.i
chủ đề an toàn hay không?
Hướng dẫn Java SE 6 không chỉ định từ khóa 'volatile' làm đối tượng lưu trữ trong bộ nhớ dễ bay hơi, nhưng nó đảm bảo đọc và viết là nguyên tử. http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html – gerrytan
Tất cả các biến được lưu trữ trong bộ nhớ dễ bay hơi (ví dụ: RAM), bất kể biến tố 'bay hơi '. http://en.wikipedia.org/wiki/Volatile_memory –
@gerrytan dễ bay hơi không nhiều về nguyên tử, nó là về khả năng hiển thị. – assylias