@Override
		public synchronized int compare(Integer i1, Integer i2) {			
			Queue<PutTask> putQueue1 = putMap.get(i1);
			Queue<GetTask> getQueue1 = getMap.get(i1);
			
			Queue<PutTask> putQueue2 = putMap.get(i2);
			Queue<GetTask> getQueue2 = getMap.get(i2);
			Long time1 = timerMap.get(i1);
			Long time2 = timerMap.get(i2);
			
			long currentTime = System.currentTimeMillis();
						
			long term1 = (putQueue1 != null ? putQueue1.size() : 0) + (getQueue1 != null ? getQueue1.size() : 0) + (time1 != null ? (currentTime - time1) : 0);
			long term2 = (putQueue2 != null ? putQueue2.size() : 0) + (getQueue2 != null ? getQueue2.size() : 0) + (time2 != null ? (currentTime - time2) : 0);
						
			return (term1 - term2) > 0 ? 1 : (term1 - term2) < 0 ? -1 : 0;			
		}