public T remove()
	{
		T queueLast = null;
		
		synchronized (queueLock)
		{
			while(queue.isEmpty())
			{
				try
				{
					queueLock.wait();
					System.out.println("Thread-" + Thread.currentThread().getName() + ": Wait...");
				} 
				catch (InterruptedException e)
				{
					e.printStackTrace();
				}
			}
			
			int lastIndex = queue.size()-1;
			T last = queue.remove(lastIndex);
			System.out.println("Thread-" + Thread.currentThread().getName() + ": Removed - \"" + last + "\"");
			queueLock.notify();
		}
		
		return queueLast;
	}