java.lang.Object
com.tlcsdm.core.concurrent.IndustrialHashMap<K,V>
线程安全HashMap实现
特性:
1. 分段锁机制,减少锁竞争
2. 读写分离,读操作无锁化
3. 自适应扩容和缩容
4. 防止hash碰撞攻击
5. 内存泄漏保护
6. 性能监控和降级机制
- 作者:
- unknowIfGuestInDream
-
嵌套类概要
嵌套类修饰符和类型类说明(专用程序包) static final classHash表条目private final class(专用程序包) static final class分段结构,每个分段独立加锁 -
字段概要
字段修饰符和类型字段说明private final AtomicIntegerprivate static final intprivate static final intprivate static final floatprivate final intprivate longprivate static final intprivate static final intprivate final AtomicIntegerprivate final intprivate final IndustrialHashMap.Segment<K,V>[] private final int -
构造器概要
构造器构造器说明IndustrialHashMap(int initialCapacity) IndustrialHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) -
方法概要
修饰符和类型方法说明voidclear()booleancontainsKey(Object key) longlongprivate intbooleanisEmpty()private voidvoidputIfAbsent(K key, V value) booleanbooleanprivate IndustrialHashMap.Segment<K, V> segmentFor(int hash) intsize()private void
-
字段详细资料
-
DEFAULT_INITIAL_CAPACITY
private static final int DEFAULT_INITIAL_CAPACITY- 另请参阅:
-
DEFAULT_CONCURRENCY_LEVEL
private static final int DEFAULT_CONCURRENCY_LEVEL- 另请参阅:
-
DEFAULT_LOAD_FACTOR
private static final float DEFAULT_LOAD_FACTOR- 另请参阅:
-
MAXIMUM_CAPACITY
private static final int MAXIMUM_CAPACITY- 另请参阅:
-
MAX_SEGMENTS
private static final int MAX_SEGMENTS- 另请参阅:
-
collisionCount
-
resizeCount
-
lastCleanupTime
private volatile long lastCleanupTime -
segments
-
segmentShift
private final int segmentShift -
segmentMask
private final int segmentMask -
hashSeed
private final int hashSeed
-
-
构造器详细资料
-
IndustrialHashMap
public IndustrialHashMap() -
IndustrialHashMap
public IndustrialHashMap(int initialCapacity) -
IndustrialHashMap
public IndustrialHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
-
-
方法详细资料
-
hash
-
segmentFor
-
get
-
put
-
putIfAbsent
-
remove
-
remove
-
replace
-
replace
-
containsKey
-
size
public int size() -
isEmpty
public boolean isEmpty() -
clear
public void clear() -
compute
-
getCollisionCount
public long getCollisionCount() -
getResizeCount
public long getResizeCount() -
printStatistics
public void printStatistics() -
startCleanupThread
private void startCleanupThread() -
performCleanup
private void performCleanup() -
keyIterator
-