自适应网站源码,在东营怎么建网站,海口建站程序,那些网站可以做公司的推广我们知道#xff0c;在日常开发中使用的HashMap是线程不安全的#xff0c;而线程安全类HashTable只是简单的在方法上加锁实现线程安全#xff0c;效率低下#xff0c;所以在线程安全的环境下我们通常会使用ConcurrentHashMap。
1. 初始化数据结构时的线程安全
HashMap的底…我们知道在日常开发中使用的HashMap是线程不安全的而线程安全类HashTable只是简单的在方法上加锁实现线程安全效率低下所以在线程安全的环境下我们通常会使用ConcurrentHashMap。
1. 初始化数据结构时的线程安全
HashMap的底层数据结构这里简单带过一下不做过多赘述 大致是以一个Node对象数组来存放数据Hash冲突时会形成Node链表在链表长度超过8Node数组超过64时会将链表结构转换为红黑树Node对象
static class NodeK,V implements Map.EntryK,V {final int hash;final K key;volatile V val;volatile NodeK,V next;...
}值得注意的是value和next指针使用了volatile来保证其可见性
在JDK1.8中初始化ConcurrentHashMap的时候这个Node[]数组是还未初始化的会等到第一次put方法调用时才初始化