* e.g. because of the termination of a thread, a
* <code>ConcurrentModificationException</code> was thrown.
*/
public void join() throws java.lang.InterruptedException {
Utils.debugMsg("Aufruf join()", this);
SimulatorThread thread;
do {
// Damit zwischendurch niemand die threadMap veraendert
synchronized (this) {
if (! threadMap.keySet().isEmpty()) {
thread = (SimulatorThread) threadMap.keySet().toArray()[0];
} else {
thread = null;
}
}
// Der folgende Teil darf nicht im synchronized-Block enthalten sein,
// da er sonst andere Teile des Programms blockieren wuerde
if (thread != null)
thread.join();
} while (! threadMap.keySet().isEmpty());
} // join