code: @Override
  	public void run()
  	{
  		try
  		{
  			while (!stopRequired)
  			{
  				if (traceEnabled)
  					log.trace("Thread entering passive wait : "+getName());
  				
  				// Passive wait
  				waitLock.acquire();
  				if (stopRequired)
  					break;
  				
  				// Process the container
  				if (traceEnabled)
  					log.trace("Executing task "+task);
  
  				// Execute task
  				task.execute();
  				
  				// Notify listener
  				listener.executionComplete(this);
  			}
  		}
  		catch (Throwable ex)
  		{
  			log.error("Asynchronous execution thread failed",ex);
  		}
  		log.debug("Thread exits : "+getName());
  	}
docs: /* (non-Javadoc)
  @see java.lang.Thread#run()