Wenn man mit Swing arbeitet benötigt man ja Threads um die GUI aktualisierbar/benutzbar zu halten.
Nun habe ich ein Programm, welches über eine URL (eine PHP Datei) Daten in eine Datenbank schreibt.
Anschließend soll das Programm den Datenbestand über eine andere PHP Datei erneut auslesen.
Mein Problem besteht nun darin, dass der Schreibvorgang manchmal etwas länger dauert und dann hat das Programm bereits den Lesevorgang wieder beendet.
Natürlich fehlen nun die Daten aus dem Schreibvorgang.
Zur Zeit habe ich 2 Threads, die die Vorgänge meistern.
Im Guibereich habe ich das Problem jetzt so gelöst: (Was natürlich keine Lösung ist, weil ich mit Thread.sleep ja genauso das GUI lahmlege)
Damit ist ja die Bedienung des Guis auch nicht möglich (man hätte sich die Threads also sparen können)
Nun meine Frage gibt es eine Möglichkeit auf den SchreibeThread zu warten, ohne dass das GUI zu leiden hat?
Als Lösung hab ich mir Gedacht, setze den kompletten Code hinter SchreibeThread in eine Methode, die dann von diesem ausgelöst wird.
Hier hab ich aber wieder das Problem, dass mein SchreibeThread auch in anderen Bereichen Anwendung findet, wonach ganz andere Aktionen ausgeführt werden sollen.
Ich müsste dann eine lange Switch-Case Abfrage durchführen, damit der Thread weiß, was er noch tun soll. Das fänd ich sehr mühevoll und unschön.
Wenn es natürlich keine andere Möglichkeit gibt, dann muss ich wohl in den sauren Apfel beißen
Aber vielleicht gibt es etwas wie
Thread.waitFor, die das Gui nicht leiden lässt!
Viele Dank für eure Tipps
Michael
Nun habe ich ein Programm, welches über eine URL (eine PHP Datei) Daten in eine Datenbank schreibt.
Anschließend soll das Programm den Datenbestand über eine andere PHP Datei erneut auslesen.
Mein Problem besteht nun darin, dass der Schreibvorgang manchmal etwas länger dauert und dann hat das Programm bereits den Lesevorgang wieder beendet.
Natürlich fehlen nun die Daten aus dem Schreibvorgang.
Zur Zeit habe ich 2 Threads, die die Vorgänge meistern.
Im Guibereich habe ich das Problem jetzt so gelöst: (Was natürlich keine Lösung ist, weil ich mit Thread.sleep ja genauso das GUI lahmlege)
Code:
// Klasse GUI...
public void schreibe() {
try {
new SchreibeThread(this).start();
Thread.sleep(500) // Dies funktioniert natürlich nur, wenn der Datenaustausch <0,5 sek dauert
new LeseThread(this).start();
} catch (Exception e) {}
}
Damit ist ja die Bedienung des Guis auch nicht möglich (man hätte sich die Threads also sparen können)
Nun meine Frage gibt es eine Möglichkeit auf den SchreibeThread zu warten, ohne dass das GUI zu leiden hat?
Als Lösung hab ich mir Gedacht, setze den kompletten Code hinter SchreibeThread in eine Methode, die dann von diesem ausgelöst wird.
Hier hab ich aber wieder das Problem, dass mein SchreibeThread auch in anderen Bereichen Anwendung findet, wonach ganz andere Aktionen ausgeführt werden sollen.
Ich müsste dann eine lange Switch-Case Abfrage durchführen, damit der Thread weiß, was er noch tun soll. Das fänd ich sehr mühevoll und unschön.
Wenn es natürlich keine andere Möglichkeit gibt, dann muss ich wohl in den sauren Apfel beißen
Aber vielleicht gibt es etwas wie
Thread.waitFor, die das Gui nicht leiden lässt!
Viele Dank für eure Tipps
Michael