While schleifen gleichzeitig laufen lassen

Hey,

wie kann ich 2 while Schleifen gleichzeitig im Hauptprogramm laufen lassen?

Der Inhalt der Schleifen darf nicht in eine, das habe ich schon.

Hoffe ihr könnt mir helfen.

Gruß
Morslord

Hallo,

du kannst eine oder beide Schleifen in Threads auslagern.
Hier noch ein Link zum Galileo Openbook „Java ist auch eine Insel“ in dem Threads gut/einfach erklärt werden.
http://openbook.galileocomputing.de/javainsel/javain…

Gruß, sagitta1793

Hey

du kannst eine oder beide Schleifen in Threads auslagern.

Kannst du mir sagen, wie ich das machen soll?
Ich versteh das mit den Threads nicht.

Aber danke schonmal für die Hilfe
Morslord

Hi,

new Thread() {
public void run() {
// Hier kommt deine Schleife rein.
}
}.start();
// Hier kommt die andere hin.
So wird der Thread gestartet, dannach läuft dein Programm normal weiter. Wenn du ein Programm mit grafischer Ausgabe schreibst (Frame), dann solltest du die andere Schleife auch in einen Thread schreiben, weil die Komponenten sonst nicht ansprechbar sind, während die Schleife läuft.

Grüße, Keks

1 Like

Hey,

ich bekomme dann den Fehler:

local variable xxx is accessed from within inner class; needs to be declared final

Und geht das überhaupt mit einer Endlosschleife?

Danke für die verständliche Antwort
Gruß Morslord

Hallo,

ich bekomme dann den Fehler:

local variable xxx is accessed from within inner class; needs
to be declared final

wenn Variablen innerhalb des Threads benötigt werden, machst du das am besten, indem du dem neuen Thread ein Objekt der aufrufenden Klasse oder einer anderen Klassen, welche die Variabeln enthalten soll, mit gibst.
Bsp.:

public class DeineHauptKlasse {

 public int variabel1, variabel2, ...;

 public void deineMethode() {
 MeinThread1 t1 = new MeinThread1(this);
 MeinThread2 t2 = new MeinThread2(this);

 t1.start();
 t2.start();
 }

}

Einer deiner Thread-Klassen:

public class MeinThread1 extends Thread {

 private final DeineHauptKlasse hauptKlasse;

 public MeinThread1(DeineHauptKlasse hauptKlasse) {
 this.hauptKlasse = hauptKlasse;
 }

 public void run() {
 while (BEDINGUNG) {
 // Um Variabeln aus der HauptKlasse zu benutzen:
 hauptKlasse.variabel1 = hauptKlasse.variabel2;
 }
 }

}

Schöner geht es natürlich mit Get- und Setmethoden.

Und geht das überhaupt mit einer Endlosschleife?

Klar, das Programm läuft halt weiter, bis kein Thread mehr aktiv ist, bis System.exit() aufgerufen wird oder bis der Prozess abgeschossen wird.
Du kannst den Thread auch als Daemon kennzeichnen, d.h. das Programm wartet nicht bis dieser Thread beendet wurde. (setDaemon() im Constructor des Threads oder auf dem Objekt in der HauptKlasse)

Gruß, sagitta1793

1 Like

Hey,

danke hat geklappt.

Gruß
Morslord