Programm führt Methoden gleichzeitig aus

Riley12121

Neues Mitglied
Hallo,
ich bin gerade dabei ein Programm mit Java zu programmieren, welches ein anderes mit Robot fernsteuert. Dort soll das Java Programm unter anderem automatisch Textfelder erstellen und diese dann nach bestimmten Vorgaben formatieren.
Nun bin ich auf das Problem gestoßen, dass sich nicht an die Reihenfolge der Programmcodes gehalten wird. Ich erstelle mit einer Methode ein beschriebenes Textfeld, dieses soll dann mit einer weiteren Methode markiert werden, nur damit danach der Reiter für die Formatierung geöffnet wird. Alles alleine klappt auch einwandfrei.
Nun ist es aber leider so, dass mein Java Programm teilweise schon den Reiter für die Formatierung öffnet, obwohl das Textfeld noch nicht beschrieben wurde, etc. Ich hatte auch schon etwas gegoogelt, wie man das verhindern kann, und bin auf Threads gestoßen und die Funktion join(). Eigentlich hatte ich es so verstanden, dass bei join() so lange gewartet wird, bis der Thread durchgelaufen ist. Allerdings klappt es leider bei mir nicht.
Kann mir vielleicht jemand erklären, was ich falsch mache, und wie ich es wirklich verhindern kann, dass der Ablauf durcheinander gerät?

Das ist meine Methode, mit der Überschriften erstellt werden sollen:
public static void überschriftGruppe (String nameG,)throws AWTException, InterruptedException{
MyThread t1 = new MyThread (nameG);
t1.start();
t1.join();
Robby.markieren(nameG);
Robbybaut.farbeWählenÖffnen();
Robbybaut.farbeWählenTextGruppe();
}

Das ist die Thread-Klasse, die ich aktuell gebaut habe:
public class MyThread extends Thread {
String nameG;

MyThread (String nameG){
this.nameG = nameG;
}

public void run (){
try {
Robbybaut.textfeld(nameG);
} catch (AWTException ex) {
Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
}
}

}
 

KonradN

Super-Moderator
Mitarbeiter
Die Beschreibung ist relativ schwer zu verstehen. Was ich verstanden habe ist, dass Du mit Deiner Java Anwendung eine andere Anwendung fernsteuerst.

Ein mögliches Problem könnte hier evtl. sein, dass Dein Steuerungs-Programm schlicht zu schnell ist. Unter dem Strich passiert ja, dass durch die Aktionen in Deinem Programm nur Events für das andere Programm erzeugt werden. Danach läuft Dein Programm direkt weiter, so dass es sein kann, dass Du weitere Events für das andere Programm erzeugst, ehe das andere Programm das erste Event abgeschlossen hat.
Das kann funktionieren, so das andere Programm die Events entsprechend der Reihenfolge des Eingangs abarbeitet. Es gibt meines Wissens nur wenige Events, die bevorzugt behandelt werden. Aber es kann natürlich zu Abhängigkeiten kommen, so Veränderungen vorgenommen werden, die existenziell für das nächste Event sind. (Wie will man z.B. ein Control verändern, das noch nicht erstellt wurde?)

Aber ohne die ganz genauen Informationen zu kennen, was Du genau wie machst, ist das nur ein raten. Das kann so sein, aber muss nicht. Evtl. liegt die Problematik auch an etwas anderer Stelle.

Ansonsten kann man nur paar allgemeine Dinge zu dem Code sagen:
Java:
MyThread t1 = new MyThread (nameG);
t1.start();
t1.join();
Sowas ist in der Regel nicht sinnvoll. Wenn Du eh auf den anderen Thread warten willst, dann kannst Du es auch gleich auf dem gleichen Thread ausführen.

Dann ist der Code so schlicht unleserlich auf unnötig aufgebläht. Es gibt ja nicht ohne Grund mit Java 8 die Funktionalen Elemente.

Statt eine Klasse von Thread erben zu lassen und dann run() zu überschreiben kannst Du einfach eine Methode schreiben, die dann einen Namen hat, der auch besagt, was da gemacht wird. Und die Methode kannst Du dann über die Methodenreferenz oder über eine Lambda Expression aufrufen.

Also von mir aus sowas in der Art:
Java:
public void createTextField(String nameG) {
    try {
        Robbybaut.textfeld(nameG);
    } catch (AWTException ex) {
        Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InterruptedException ex) {
        Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Und Nutzung per new Thread( () -> createTextField("Whatever") )

Dann ist es aus meiner Sicht eher Üblich, den Logger als statische Variable zu haben und nicht immer neu mit getLogger zu holen. Also etwas wie:
private static Logger logger = Logger.getLogger(MyThread.class.getName());
Um dann den logger zu nutzen, wo man ihn braucht.

Und dann auch noch der Hinweis: Du hast seit Java 7 die Möglichkeit, mehrere Exception Typen anzugeben:
Java:
public void createTextField(String nameG) {
    try {
        Robbybaut.textfeld(nameG);
    } catch (AWTException | InterruptedException ex) {
        Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
    }
}
 

Riley12121

Neues Mitglied
Tatsächlich hast du gerade schon mein Problem damit gelöst.
Ich hatte zwar berücksichtigt, dass mein Programm zwischen einzelnen Klicks der Robot Klasse Zeit zum Reagieren braucht, ausgerechnet am Ende von Robbybaut.textfeld (nameG) habe ich es allerdings vergessen. Jetzt, wo ich dort auch eine kurze Pause einlegen lasse, funktioniert mein Programm wieder.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
L TV Programm API/Web Service o.ä. Allgemeine Java-Themen 6
G Programm dauerhaft laufen lassen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben