Hallo,
ich habe da einen Fehler, den ich mir nicht erklären kann.
Ich habe einen (Mutter-) Prozess, der viele Kindsprozesse startet. Ich füge die Prozesse in eine Map ein, damit ich sie als Mutterprozess wiederfinden kann. Ich möchte dann warten bis alle Kindsprozesse beendet sind. Doch leider läuft die Java-VM weiter. Ich kann mit einem sysout darstellen, dass die Kindsprozesse alle am Ende sind, auch der Mutterprozess ist dort angekommen, aber 'offiziell' macht die Vm weiter und beendet das Programm nicht ordnungsgemäß.
Ich programmiere mit Java 5 in Eclipse 3.2.
Der entsprechende Code, ich denke, da liegt der Fehler irgendwo, aber ich finde ihn einfach nicht.
Was mache ich falsch?
Ciao, Q
ich habe da einen Fehler, den ich mir nicht erklären kann.
Ich habe einen (Mutter-) Prozess, der viele Kindsprozesse startet. Ich füge die Prozesse in eine Map ein, damit ich sie als Mutterprozess wiederfinden kann. Ich möchte dann warten bis alle Kindsprozesse beendet sind. Doch leider läuft die Java-VM weiter. Ich kann mit einem sysout darstellen, dass die Kindsprozesse alle am Ende sind, auch der Mutterprozess ist dort angekommen, aber 'offiziell' macht die Vm weiter und beendet das Programm nicht ordnungsgemäß.
Ich programmiere mit Java 5 in Eclipse 3.2.
Der entsprechende Code, ich denke, da liegt der Fehler irgendwo, aber ich finde ihn einfach nicht.
Code:
// hier werden noch ein paar Typen geprüft, sodass ich das Casting unten als korrekt bestätigen kann
for (Iterator i = atoms.iterator(); i.hasNext();) {
subContext = new ExecutionContext(this.session, this);
this.childExecutionContext.add(subContext);
execThread = new ExecutionContextThread(subContext);
execThread.run((Script) i.next());
}
for (Iterator i = atoms.iterator(); i.hasNext();) {
try {
// warten
execThread.join();
}
catch (InterruptedException e) {
e.printStackTrace();
}
finally {
// schließlich alles auf Anfang, es wurde alles korrekt ausgeführt
subContext = execThread.getExecutionContext();
this.childExecutionContext.remove(subContext);
}
}
Was mache ich falsch?
Ciao, Q