@Override
		public void run() {
			synchronized (m_eventSynchronisation) {
				m_shutdownTriggered = true;
				m_eventSynchronisation.notifyAll();
			}
		}
The application's main loop. This is split from the constructor as theoretically it might be
called multiple times. The constructor sets up the static configuration, this does a single
execution.
<p/>
<p>
This method is interruptible, in the same sense as
{@link net.grinder.util.thread.InterruptibleRunnable#interruptibleRun()}. We don't implement
that method because we want to be able to throw exceptions.
</p>

@throws net.grinder.common.GrinderException
         If something went wrong.
ngrinder-runtime/src/main/java/net/grinder/engine/process/GrinderProcess.java