Fixed bug in ThreadPoolRunner caused by violation of this assumption:
		 * TODO: Make sure that items are only removed from the queue once
		 * execution is *complete*. If the queue is empty only because running
		 * jobs are somewhere else, then an empty queue doesn't mean that all
		 * jobs have finished.