Thuật ngữ ngữ cảnh an toàn trường cuối cùng được sử dụng thường xuyên trong đoạn 17.5.3 của JLS (sửa đổi sau cùng của trường cuối cùng). Mặc dù, như có thể được hiểu từ đặc điểm kỹ thuật (nếu tôi sai ở đây, xin vui lòng sửa tôi)Ý nghĩa chính xác của bối cảnh an toàn trường cuối cùng trong JLS
An implementation may provide a way to execute a block of code
in a final-fieldsafe context.
hành vi chính xác là phụ thuộc vào thực hiện, vẫn chưa có định nghĩa rõ ràng về thuật ngữ.
Tôi có thể giả sử, rằng nếu chúng ta có một trường chính thức đóng băng F (một xảy ra ở phần cuối của xây dựng đối tượng hoặc thức trường được thiết lập bởi các phương tiện phản ánh API) và một hành động Một, như vậy mà xảy ra trước (F, A), sau đó A có trong ngữ cảnh an toàn trường cuối cùng?
Vì vậy, tôi đoán tất cả đều sai. Nhưng tôi vẫn cảm thấy bối rối. Trong liên kết đến JSR133 FAQ bạn đã đăng, họ đã đề cập đến "đối tượng được xây dựng chính xác". Tôi có thể suy đoán rằng đối tượng được xây dựng trong một bối cảnh an toàn trường cuối cùng, khi không con trỏ đến đối tượng này cũng không trỏ đến trường cuối cùng của nó bị rò rỉ trong khi xây dựng? Hay tôi lại sai à? – mkrakhin
Hầu như, 'đối tượng được xây dựng chính xác' đề cập đến một vấn đề trong đó một ref cho đối tượng trốn sang mã khác trước khi đối tượng đã được xây dựng đầy đủ (hoặc có nguy cơ xảy ra). Google cho 'các vấn đề với khóa được kiểm tra kép trên Java'. Doug Lea đã viết một số bài báo tuyệt vời mà nghiên cứu kỹ những vấn đề này và hình thành cơ sở cho JSR 133. –
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html là một ví dụ như vậy. Trang wikipedia về chủ đề cũng đáng đọc. http://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java –