Eure Meinung: Threads verwenden, oder nicht?

Jigga

Bekanntes Mitglied
Hallo forumgemeinede,

ich programmiere gerade an einem programm, dass am ende folgendes kann:
- zwei buttons sind vorhanden:
- erster button läd eine datei auf einem server hoch und ist optional.muss also nicht bedient werden​
- zweiter button läd eine andere datei hoch und ist an dieser stelle zwingend erforderlich. an diesen button ist noch eine weitere funktion gebunden, die eine textdatei hochläd in der die html links der ersten beiden dateien enthalten sind​

meine idee war es die performance zu erhöhen,indem der erste upload via thread bewerkstelligt wird.gleiches gilt für den zweiten button.
das problem dabei ist, dass die funktion, die am zweiten button hängt ja auf die links warten muss,sprich bis die threads fertig sind.
jetzt wollte ich dies mit flags machen sowas wie
Java:
while (isUploaded == false) {
//tue irgendwas
}
//da nach der while die links vorhanden sind,also die variable true ist kommt dann hier der upload der textdatei

finde diese variante jedoch nicht sonderlich elegant,vorallem weil der upload evtl schief gehen könnte,also müsste ich wieder mit flags für error oder sowas in der richtung arbeiten?
ohne threads wäre das ganze denkbar einfach...deswegen die frage an dieser stelle.sind die threads überhaupt sinnvoll und wenn ja würde ich gerne einen schubs in die richtige richtung haben 🙂
 
Mach das ganze mal mit einem "waitfor" auf dem Thread.
Der Thread selber übernimmt ja das Laden und ein Fehlerhandling. Dieses kannst Du dann entsprechend auswerten.

Das waitFor kennt zwei Varianten. Zum Einen das Warten bis Ewig und das andere mit timeout.

Viel Erfolg
 
was genau ist dein Ziel mit den Threads?, Performance scheint etwas fraglich,
eher schon dienen sie dazu dass die GUI nicht blockiert, vielleicht gar den Status anzeigt

programmiere doch erstmal alles ohne Threads, oder ist das schon fertig?
kann mir kaum vorstellen dass sich allein durch Threads die Fehlerbehandlung, Flag-Menge usw. erhöht,
oder beschreibe doch bisschen genauer was du dir denkst,

wenn du Probleme hast zwei Prozesse abzustimmen, dann vielleicht nur ein Thread der beide ganz normal hintereinander ausführt,
oder schon bekannt/ keine Besserung und dir geht es konkret um zwei Threads?
 
Mach das ganze mal mit einem "waitfor" auf dem Thread.
Der Thread selber übernimmt ja das Laden und ein Fehlerhandling. Dieses kannst Du dann entsprechend auswerten.

Das waitFor kennt zwei Varianten. Zum Einen das Warten bis Ewig und das andere mit timeout.

Viel Erfolg
hört sich vielversprechend an,danke.



was genau ist dein Ziel mit den Threads?, Performance scheint etwas fraglich,
eher schon dienen sie dazu dass die GUI nicht blockiert, vielleicht gar den Status anzeigt

programmiere doch erstmal alles ohne Threads, oder ist das schon fertig?
kann mir kaum vorstellen dass sich allein durch Threads die Fehlerbehandlung, Flag-Menge usw. erhöht,
oder beschreibe doch bisschen genauer was du dir denkst,

wenn du Probleme hast zwei Prozesse abzustimmen, dann vielleicht nur ein Thread der beide ganz normal hintereinander ausführt,
oder schon bekannt/ keine Besserung und dir geht es konkret um zwei Threads?

ich möchte die dauer der main-atkion bei klick auf den zweiten button verkürzen.solange die optionale erste datei hochgeladen wird,soll in der zwischenzeit auch die andere hochgeladen werden. da die beiden aktionen sowieso immer hintereinandere ausgeführt werden. sprich es gibt nicht einen btn1 klick,ohne das darauf ein klick auf btn2 folgt.
sonst müsste der benutzer erst warten, bis die erste hochgeladen wurde.
eventuell füge ich später noch eine status console zur gui hinzu(steht noch nicht fest).
ohne threads funktioniert das ganze bereits auch soweit 🙂

du meinst einen thread starten,der zwei weitere threads startet? würde dies nicht im selben problem resultieren?
ein gewisses problem bildet die werte rückgabe der threads.dies wird zur zeit durch einen setter gemacht: wenn thread1 abgelaufen ist, setzt er die link variable in der entsrepchenden klasse.
 
Zuletzt bearbeitet:
einen Thread starten, der beide Aktionen bzw. eben diejenigen Aktionen ausführt, die zu tun sind,
z.B. eine Liste von Aufträgen hat, gibts auch in Java schon ExecutorService oder ähnliches,

waitFor() kommt sicherlich aufs gleiche hinaus
 
hab gerade im galileo buch nachgelesen,weil ich waitFor() bei threads nicht gefunden habe.
bin dann auf "join()" gestoßen und das ist wohl genau das,was ich gesucht habe 🙂
 
oh ja, stimmt,
waitFor() heiß es bei Process, wenn ein externes zweites Programm gestartet wird
 

Zurück
Oben