我讀了關於ConcurrentHashMap的JDK源代碼。爲什麼JDK源代碼需要`volatile`實例的最終副本
但下面的代碼搞糊塗了:
public boolean isEmpty() {
final Segment<K,V>[] segments = this.segments;
...
}
我的問題是:
「this.segments」 聲明:
final Segment<K,V>[] segments;
所以,在這裏,在的開始方法,聲明一個相同的類型引用,指向相同的內存。
作者爲什麼這樣寫呢?爲什麼他們不直接使用this.segments?有什麼理由嗎?
所以如果有人改變'this.segments'的內容,你不會在你的'segments'中看到這種變化嗎? – brimborium
當然你會看到它。但是如果某人給「分段」指定了別的東西,那麼顯然你會與此分離。 –
啊,是的,當然。 Missunderstood你的答案......;) – brimborium