This method is the entry point to the thread main loop function. doExecute handles "bookkeeping" issues and calls the execute method to do the actual event loop processing.
doExecute handles situations where the event loop is stopped for some reason. For example, if there is a single active object running on its own thread, and the object reaches a termination connector, it must "kill" itself and its thread. However, it cannot kill the thread until after it exits the event loop.
The doExecute method calls ~OMThread, the destructor for the OMThread class, to delete a thread.