Hi!
Ich hab ein großes Problem.
Hab eine main-Methode, die zwei Klassen instanziert. Beide instanzierten Klassen erben von der Klasse Thread. Anschließend rufe ich die .start()-Methode beider Instanzen auf:
Soweit, so gut. In der run-Methode beider Threads (die ja von .start() aufgerufen wird) mach ich nichts anderes, als eine Klasse Generator zu instanzieren (in jedem der beiden Threads). Anschließend wird eine Methode der Instanz aufgerufen. Damit will ich erreichen, dass der Inhalt der aufgerufenen Methode parallel ausgeführt wird. Also 1x/Thread.
Der Inhalt der Methode, die ausgeführt wird, soll folgendes machen: DB-Abfragen machen, verarbeiten und das "Ergebnis" auf ein GUI schreiben. Ein Thread schreibt auf eine JTextArea, der andere Thread auf die andere JTextArea.
Nun mein Problem: Wird die Methode, die parallel ausgeführt wird ausgeführt, und das wird auch parallel ausgeführt (debug-Ausgaben) passiert teilweise (und genau das ist das Problem, dass es nicht IMMER so ist) folgendes: An einer JTextArea wird der Inhalt angezeigt, der eigentlich auf der anderen angezeigt werden soll. Es wird also bei einen Thread das falsche ausgeführt. Wie gesagt ist es leider so, dass das nur selten vorkommt.
Lt. Debug-Ausgaben wird zwar Thread 1 ausgeführt, die Select-Ergebnisse der DB gehören jedoch zur Query, die ich in Thread 2 absetze.
Habt ihr irgendeine Ahnung, was da falsch sein kann? Behindern sich die Threads da irgendwie gegenseitig? Hab ich die Threads falsch angelegt bzw. ausgeführt? Gibt es evtl. ein Problem mit der Methode, die parallel ausgeführt werden soll (also rufe ich sie falsch auf)? Das Problem ist, dass ich mich mit Threads nicht so gut auskenne. Hab zwar nachgelesen, find aber nichts besonderes, das meinen Fehler beheben könnte!
Vielleicht habt ihr ja einen Tipp!
Vielen Dank im Voraus!
Ich hab ein großes Problem.
Hab eine main-Methode, die zwei Klassen instanziert. Beide instanzierten Klassen erben von der Klasse Thread. Anschließend rufe ich die .start()-Methode beider Instanzen auf:
Code:
XXXThread xxxThread = new XXXThread ();
YYYThread yyyThread = new YYYThread ();
xxxThread.start();
yyyThread.start();
Soweit, so gut. In der run-Methode beider Threads (die ja von .start() aufgerufen wird) mach ich nichts anderes, als eine Klasse Generator zu instanzieren (in jedem der beiden Threads). Anschließend wird eine Methode der Instanz aufgerufen. Damit will ich erreichen, dass der Inhalt der aufgerufenen Methode parallel ausgeführt wird. Also 1x/Thread.
Der Inhalt der Methode, die ausgeführt wird, soll folgendes machen: DB-Abfragen machen, verarbeiten und das "Ergebnis" auf ein GUI schreiben. Ein Thread schreibt auf eine JTextArea, der andere Thread auf die andere JTextArea.
Nun mein Problem: Wird die Methode, die parallel ausgeführt wird ausgeführt, und das wird auch parallel ausgeführt (debug-Ausgaben) passiert teilweise (und genau das ist das Problem, dass es nicht IMMER so ist) folgendes: An einer JTextArea wird der Inhalt angezeigt, der eigentlich auf der anderen angezeigt werden soll. Es wird also bei einen Thread das falsche ausgeführt. Wie gesagt ist es leider so, dass das nur selten vorkommt.
Lt. Debug-Ausgaben wird zwar Thread 1 ausgeführt, die Select-Ergebnisse der DB gehören jedoch zur Query, die ich in Thread 2 absetze.
Habt ihr irgendeine Ahnung, was da falsch sein kann? Behindern sich die Threads da irgendwie gegenseitig? Hab ich die Threads falsch angelegt bzw. ausgeführt? Gibt es evtl. ein Problem mit der Methode, die parallel ausgeführt werden soll (also rufe ich sie falsch auf)? Das Problem ist, dass ich mich mit Threads nicht so gut auskenne. Hab zwar nachgelesen, find aber nichts besonderes, das meinen Fehler beheben könnte!
Vielleicht habt ihr ja einen Tipp!
Vielen Dank im Voraus!