ConcurrentHashMap 线程安全的具体实现方式
ConcurrentHashMap 是 Java 并发包中提供的一个线程安全且高效的 HashMap 实现,以弥补 HashMap 不适合在并发环境中操作使用的不足,本文就来分析下 ConcurrentHashMap 的实现原理,并对其实现原理进行分析!
一、摘要
在之前的集合文章中,我们了解到 HashMap 在多线程环境下操作可能会导致程序死循环的线上故障!
既然在多线程环境下不能使用 HashMap,那如果我们想在多线程环境下操作 map,该怎么操作呢?
其中有一个解决办法就是使用 java 并发包下的 ConcurrentHashMap 类!
二、简介
众所周知,在 Java 中,HashMap 是非线程安全的,如果想在多线程下安全的操作 map,主要有以下解决方法:
-
第一种方法,使用
Hashtable
线程安全类; -
第二种方法,使用
Collections.synchronizedMap
方法,对方法进行加同步锁; -
第三种方法,使用并发包中的
ConcurrentHashMap
类;
在之前的文章中,关于 Hashtable 类,我们也有所介绍,Hashtable 是一个线程安全的类,Hashtable 几乎所有的添加、删除、查询方法都加了synchronized