Java中ConcurrentHashMap的节点HashEntry 中元素为什么要定义成final的?
大家讲道理
大家讲道理 2017-04-17 16:13:32
0
1
822
static final class HashEntry<K,V> {
    final K key;
    final int hash;
    volatile V value;
    final HashEntry<K,V> next;
}

这样导致在remove节点的时候,需要将remove节点的前面节点全部复制一遍,真的好吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
巴扎黑

해시 충돌이 발생하면 충돌을 해결하기 위해 연결된 목록이 사용되지만 해시 충돌 가능성은 매우 낮으며 충돌을 줄이기 위해 맵이 자동으로 확장됩니다.

final을 사용하는 경우 Java 컴파일러는 읽기 전에 최종 필드가 작성되었는지 확인합니다. 즉, 다중 스레드 동시성 조건에서 읽은 후 쓰기가 발생하고 예상치 못한 값을 읽는 것을 방지하기 위해 읽기 전에 쓰기가 발생하는지 확인합니다. .

포털:java 메모리 모델 최종

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿