Tôi đọc mã nguồn của JDK về ConcurrentHashMap.Tại sao mã nguồn JDK lấy bản sao `cuối cùng 'của các biến thể` volatile`
Nhưng đoạn mã sau nhầm lẫn tôi:
public boolean isEmpty() {
final Segment<K,V>[] segments = this.segments;
...
}
Câu hỏi của tôi là:
"this.segments" được khai báo:
final Segment<K,V>[] segments;
Vì vậy, ở đây, trong đầu , đã khai báo cùng một tham chiếu kiểu, trỏ đến cùng một bộ nhớ.
Tại sao tác giả viết nó như thế này? Tại sao họ không sử dụng trực tiếp điều này? Có lý do gì không?
Vì vậy, nếu ai đó thay đổi nội dung 'this.segments' này, bạn sẽ không thấy thay đổi đó trong' phân đoạn' của mình? – brimborium
Tất nhiên bạn sẽ thấy nó. Nhưng nếu ai đó gán cái gì đó khác cho 'phân đoạn', bạn rõ ràng sẽ bị cô lập khỏi điều đó. –
Ah vâng, chắc chắn rồi. Missunderstood câu trả lời của bạn ...;) – brimborium