public void enqueue(final BaseWorkTask task) {
		synchronized (mQueue) {
			if (getSize() > queueSize) {	//check if threshold reached
				isOverFlow = true;
				try {
					//wait for dequeue events since queue is full
					mQueue.wait();
					//Thread.sleep(10000);	//do not use .sleep (too much overhead)
				} catch (InterruptedException e) {
					//Here could be totally WRONG swallow this exception
					e.printStackTrace();
				}
			}
			
			//Ojo, por que el unico que agrega elementos es este
			mQueue.add(task);

			//wake all waiting workers
			mQueue.notifyAll();
		}
	}