Z
Zacherl
Gast
Hallo,
Edit: Die erste Frage ist erstmal erledigt, danke für die bisherigen Antworten!
Eine andere Sache ist die Visualisierung und Steuerung von Threads: Ich will die Prozesse möglichst klar für den Nutzer über die GUI darstellen. Selbstverständlich habe ich mir die JStatusBar angesehen und einen Thread auf eine Statusbar abzubilden ist auch kein Thema; den Thread zu steuern fuchst mich dagegen sehr. Selbstverständlich kenne ich die interrupt()-Methode, aber es widerstrebt mir, in einem Thread dauernd eine Variable abzufragen, weil es mir vorkommt, als würde es den Gesamtaufwand sinnlos in die Höhe treiben - mich interessiert ja nicht der Zustand, ob der Thread unterbrochen werden soll oder nicht, sondern der Zustandswechsel, also der Zeitpunkt, an dem die interrupt()-Methode ein "true" zurückgibt.
Ich weiß nicht, ob es saubere Methoden gibt, Threads (und das geht ja fast nur bei Threads miit Schleifen) quasi wie als Reaktion auf ein Event zu pausieren oder auch abzubrechen, ohne die stop() bzw. suspend()/resume()-Methoden zu nutzen, da man ja nicht mehr von außen auf den Thread einwirken kann, nur das interrupt()-Signal kann zu jeder Zeit kommen.
Falls irgendjemand was mit dem Zeug anfangen kann, das ich von mir gegeben habe, bitte melden! ;D
MfG Zacherl
Die alte erste Frage, falls es wen interessiert.
Ich arbeite derzeit an einem Programm, das XML-Daten verarbeiten soll. Momentan versuche ich, die Ladeprozesse und die Abbildung der XML-Struktur auf eine interne Hashing-Struktur über nebenläufige Threads zu realisieren, was soweit auch klappt. Was mir den Kopf zerbricht, ist, dass beim selben Initialisierungsvorgang, also wenn ich die Threads loslegen lasse, es bis zu 30% länger dauert, wenn ich sie nebenläufig (also mit new Thread(runnable).start()) und nicht sequenziell (also jeden einzelnen Thread nur mit new Thread(runnable).run()) laufen lasse.
Lohnt es sich überhaupt, den Ladevorgang einer XML-Datei weiter auf kleine Threads herunterzubrechen, also für Teilbereiche wieder einzelne Threads laufen zu lassen, oder ist es günstiger, nur einen einzelnen Thread für den gesamten Vorgang loszuschicken? Ich fürchte fast, die Frage ist zu allgemein gestellt, also bitte glimpflich mit mir umgehen.
Edit: Die erste Frage ist erstmal erledigt, danke für die bisherigen Antworten!
Eine andere Sache ist die Visualisierung und Steuerung von Threads: Ich will die Prozesse möglichst klar für den Nutzer über die GUI darstellen. Selbstverständlich habe ich mir die JStatusBar angesehen und einen Thread auf eine Statusbar abzubilden ist auch kein Thema; den Thread zu steuern fuchst mich dagegen sehr. Selbstverständlich kenne ich die interrupt()-Methode, aber es widerstrebt mir, in einem Thread dauernd eine Variable abzufragen, weil es mir vorkommt, als würde es den Gesamtaufwand sinnlos in die Höhe treiben - mich interessiert ja nicht der Zustand, ob der Thread unterbrochen werden soll oder nicht, sondern der Zustandswechsel, also der Zeitpunkt, an dem die interrupt()-Methode ein "true" zurückgibt.
Ich weiß nicht, ob es saubere Methoden gibt, Threads (und das geht ja fast nur bei Threads miit Schleifen) quasi wie als Reaktion auf ein Event zu pausieren oder auch abzubrechen, ohne die stop() bzw. suspend()/resume()-Methoden zu nutzen, da man ja nicht mehr von außen auf den Thread einwirken kann, nur das interrupt()-Signal kann zu jeder Zeit kommen.
Falls irgendjemand was mit dem Zeug anfangen kann, das ich von mir gegeben habe, bitte melden! ;D
MfG Zacherl
Die alte erste Frage, falls es wen interessiert.
Ich arbeite derzeit an einem Programm, das XML-Daten verarbeiten soll. Momentan versuche ich, die Ladeprozesse und die Abbildung der XML-Struktur auf eine interne Hashing-Struktur über nebenläufige Threads zu realisieren, was soweit auch klappt. Was mir den Kopf zerbricht, ist, dass beim selben Initialisierungsvorgang, also wenn ich die Threads loslegen lasse, es bis zu 30% länger dauert, wenn ich sie nebenläufig (also mit new Thread(runnable).start()) und nicht sequenziell (also jeden einzelnen Thread nur mit new Thread(runnable).run()) laufen lasse.
Lohnt es sich überhaupt, den Ladevorgang einer XML-Datei weiter auf kleine Threads herunterzubrechen, also für Teilbereiche wieder einzelne Threads laufen zu lassen, oder ist es günstiger, nur einen einzelnen Thread für den gesamten Vorgang loszuschicken? Ich fürchte fast, die Frage ist zu allgemein gestellt, also bitte glimpflich mit mir umgehen.
Zuletzt bearbeitet von einem Moderator: