public DatabaseTaskResult queueAndWaitIndefinitely(IDatabaseTask theTaskOf, Object[] runArgs)
			throws InterruptedException {
		if (!isAlive)
			throw new RuntimeException("Cannot queue job; the database has been shut down.");
		DeferredDBTask theTask = new DeferredDBTask(theTaskOf, runArgs);
		runQueue.put(theTask);
		synchronized (theTask.theLock) {
			theTask.theLock.wait();
		}
		return theTask.getDatabaseTaskResult();
	}