@Override
	public V put(K key, V val) {
		V retval = null;
		int keyhash = hash(key) % lock.length;
		synchronized(lock[keyhash]){
			int tabHash = hash(key) % table.length; 
			//long t = System.currentTimeMillis();
			retval = table[tabHash].put(key, val);
			/*if(largestbucketever < table[tabHash].size()){
				largestbucketever = table[tabHash].size();
			}*/
			/*long time;
			if((time = System.currentTimeMillis()) > t+2000){
				System.out.println("error in put! Thread " + ((HMThread)Thread.currentThread()).getThreadId() 
						+ " went over by " + (time - t) + " in bucket " + keyhash);
			}*/
			return retval;
		}

		/*if(largestbucketever > 500)
			resize();*/
	}