0
点赞
收藏
分享

微信扫一扫

一个简单的分段锁hashmap


public class MyConcurrentHashMap<K,V> {
private HashMap<K,V> map=new HashMap<K,V>();
private Object[] locks=null;
private int lockSize;


public MyConcurrentHashMap(int lockSize){
this.lockSize=lockSize;
locks=new Object[lockSize];
for(int i=0;i<lockSize;i++){
locks[i]=new Object();
}
}

private Object getLock(K key){
return locks[key.hashCode()%lockSize];
}

public void put(K key,V value){
synchronized (getLock(key)) {
this.map.put(key, value);
}
}

public V get(K key){
synchronized (getLock(key)) {
return this.map.get(key);
}
}
}

 

举报

相关推荐

0 条评论