Hi
Ich würde gerne aus einem Thread heraus eine Mehode in meinem Mainthrad aufrufen ohne eine exeption zu bekommen.Ich habe schon eine Zeit gegoogelt aber nix hilfreiches gefunden.Weis jmd. wie es geht?
oeh ich glaub da liegt ein Verständnisproblem vor Threads sind ja keine Räume in die man reintreten kann und was macht, sondern eher das ausführende Etwas, dass in einem Raum etwas macht.
So gesehen, kann dein Thread nicht etwas IN einem anderen Thread manipulieren. Was aber geht, dass beide Threads sich den selben, oder einen Ausschnitt des Aktionsraumes teilen und auf den SELBEN Daten arbeiten.
Du müsstest vielleicht nochmal genau erklären, was du vorhast, mit Beispiel.
Beschreibe uns doch einfach was du genau vor hast und was du bisher an Code-gerüst hast, um es zu versuchen, dann kann man auch gezielt helfen. Ooooooder du googlest weiter ...
publicclass main{publicvoid starte Thread{ArbeitsThread AT =newArbeitsThread();
AT.start(this);}publicvoidErgebnisAusgeben(int ergebnis){//Das hier soll aufgerufen werden
jTextField1.setText(ergebnis);}}
haben keine Parameter. Du kannst diese dem Konstruktor des Threads mitgeben.
Hier Pseudo-Code in deinem Stil hinzugefügt:
Java:
publicclass main{publicvoid starte Thread{ArbeitsThread AT =newArbeitsThread(this);
AT.start();}publicvoidErgebnisAusgeben(int ergebnis){//Das hier soll aufgerufen werden
jTextField1.setText(ergebnis);}}
Java:
publicclassArbeitsThreadextendsThread{
main Main;publicArbeitsThread(main Main){this.Main=Main;}publicvoidrun(){//Do work
main.ErgebnisAusgeben(ergebnis);}}
Schau dir unbedingt die Code Conventions an! Dieser Code ist ziemlich grausam (und lauffähig sowieso nicht).
[EDIT]Nachposter: Ich habe es zumindest beim Pseudo-Code belassen. [/EDIT]
da fehlen ja einige Basics .. das kann kein Auszug aus aktuellem Code sein, da es einfach nich funktioniert und schlichtweg falsche Syntax darstellt. Nichtmal die API verwendest du richtig (AT.start(this))
die Methode kennt die Klasse Thread nicht, und selbst angelegt hast du sie auch nicht in deiner Threadklasse.
Baue doch einmal ein Grundgerüst auf, ohne die spezielle Methode aufrufen zu wollen.
Erstelle ne Main-Klasse (Klassennamen gross), korrigiere deine Thread-Klasse. Baue ein Grundgerüst, welches dir ein Objekt der Threadklasser erstellt, funktioniert ja, starte den Thread, und lasse in der run-methode des Threads ne simple Ausgabe machen. Wenn das klappt und schön in einer main-Methode verpackt, dann kannst du anfangen innerhalb der run-Methode auf eine fremde Klasse zuzugreifen.
Die Thread-Basics sind wunderbar im Netz zu finden, und beinhalten nicht viel Code.
Daher das Anraten, das erstmal selbst zu schaffen:
Main-Klasse +
Code:
public static void main
-Methode + Thread-Objekt .. in run des Threads einfache Ausgabe einbauen, Thread in main-Methode starten und Ausgabe erhalten.
Dann weitermachen mit dem eigentlichen Problem
[EDIT]nu hat xehpuk schon alles verraten ^^[/EDIT]
haben keine Parameter. Du kannst diese dem Konstruktor des Threads mitgeben.
Hier Pseudo-Code in deinem Stil hinzugefügt:
Java:
publicclass main{publicvoid starte Thread{ArbeitsThread AT =newArbeitsThread(this);
AT.start();}publicvoidErgebnisAusgeben(int ergebnis){//Das hier soll aufgerufen werden
jTextField1.setText(ergebnis);}}
Java:
publicclassArbeitsThreadextendsThread{
main Main;publicArbeitsThread(main Main){this.Main=Main;}publicvoidrun(){//Do work
main.ErgebnisAusgeben(ergebnis);}}
Schau dir unbedingt die Code Conventions an! Dieser Code ist ziemlich grausam (und lauffähig sowieso nicht).
[EDIT]Nachposter: Ich habe es zumindest beim Pseudo-Code belassen. [/EDIT]