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);
}
}
}