Câu trả lời có phần phụ thuộc vào kiến trúc. Trên x86, không có thêm chi phí nào liên quan đến việc đọc biến động cụ thể, mặc dù có những hàm ý cho các tối ưu hóa khác.
JMM cookbook from Doug Lea, see architecture table near the bottom.
Để làm rõ: Không có bất kỳ chi phí thêm liên quan đến việc đọc chính nó. Các rào cản bộ nhớ được sử dụng để đảm bảo trật tự phù hợp. JSR-133 phân loại bốn rào cản "LoadLoad, LoadStore, StoreLoad và StoreStore". Tùy thuộc vào kiến trúc, một số rào cản này tương ứng với "không có op", nghĩa là không có hành động nào được thực hiện, những người khác yêu cầu một hàng rào. Không có chi phí tiềm ẩn liên quan đến bản thân tải, mặc dù có thể xảy ra nếu hàng rào được đặt đúng vị trí. Trong trường hợp x86, chỉ có một rào cản StoreLoad dẫn đến hàng rào.
Như được chỉ ra trong bài đăng trên blog, thực tế biến là dễ bay hơi có nghĩa là có các giả định về bản chất của biến không thể thực hiện được nữa và tối ưu hóa một số trình biên dịch sẽ không được áp dụng cho biến động.
Dễ bay hơi không phải là thứ nên được sử dụng một cách rõ ràng, nhưng cũng không nên lo sợ. Có rất nhiều trường hợp, nơi dễ bay hơi sẽ đủ chỗ thay cho khóa tay nặng hơn.
Nguồn
2009-07-07 04:39:09
Bạn có thể thêm "java" vào một nơi nào đó trong câu hỏi không? Đã có sự nhầm lẫn với C - chỉ cần thiết lập các từ khóa dường như không đủ. –
có vẻ như bây giờ là – pdeva