Threads aufeinander warten lassen?

Ich habe eine Frage (warum schreibe ich denn sonst hier rein?)

Ich programmiere zurzeit eine Straßenkreuzung (diejenigen, die sich vielleicht daran erinnern, dass ich schon mal eine Frage hier reingestellt habe vor langer langer Zeit wegen der Programmierung einer gewissen Straßenkreuzung - ja, ich bin immer noch dran :D) und wollte dort zwei Threads, die zwei Ampeln zeichnen, synchron schalten. Aber da die Synchronisation durch das Schlüsselwort synchronized irgendwie nur dazu führt, dass nur ein Thread auf ein Element zur gleichen Zeit zugreifen kann (so in etwa, sorry für meine Ausdrucksweise, hoffe, ihr wisst was ich meine), ist das irgendwie nicht das, was ich selbst mit "Synchronisation" meine.

Ich würde gerne die beiden Threads, die jeweils eine Ampel zeichnen (rufen repaint()-Methode einer erweiterten JPanel-Klasse auf) so miteinander synchronisieren, dass der Thread, der zuerst "Gelb" gezeichnet hat in der Ampel, auf den anderen Thread wartet, der noch mit "Gelb" beschäftigt ist. Es ist also ungewiss, welcher Thread auf wen warten muss. Die sollen halt aufeinander warten, bevor sie was neues zeichnen. Hoffe, das ist verständlich ausgedrückt.

Wenn ich beide einfach gleichzeitig malen lasse, komplett unabhängig voneinander, kommt es vor, dass ein Thread dem anderen kurzzeitig mal hinterherhinkt, und das ist dann schon nicht so praktisch in einer Straßenkreuzung, wenn die eine Ampel, die genau das gleiche wie die andere Ampel anzeigen soll, eine Sekunde länger Gelb zeigt als die andere. (ok, Sekunde ist übertrieben, aber man merkt es definitiv, dass die beiden Ampeln nicht "synchron" laufen, da sie ja voneinander nichts wissen).

Habe mir das irgendwie so vorgestellt, dass ich ein Integer x habe, der von einem Thread erhöht wird, wenn er fertig ist mit malen, und dann darauf wartet, bis dieser erneut erhöht wird durch den anderen Thread. Wenn x also zweimal erhöht wurde, sind beide fertig, und beide können weitermalen. Vielleicht könnte man das mit "synchronized" verbinden? Aber irgendwie schaffe ich es nicht, diese Idee in Code umzusetzen.

Habe eine Testklasse geschrieben, damit ich euch nicht den kompletten Code der Straßenkreuzung geben muss. Analog zu dem "warten, bis andere fertig mit zeichnen ist" kann man hier sagen, dass der Thread, der zuerst bis zur Fünf gezählt hat, soll warten, bis der andere Thread bei der Fünf angekommen ist, EGAL welcher Thread das ist. Aber wie kann man sowas implementieren? :eek:

Komme da gerade überhaupt nicht weiter :/


Java:
package threadtest;

public class ThreadTest extends Thread {

    public static void main(String[] args) {
        PrintDemo PD = new PrintDemo();
        ThreadDemo T = new ThreadDemo(PD);
        ThreadDemo T2 = new ThreadDemo(PD);
        T.start();
        T2.start();
    }
}


Java:
package threadtest;

public class ThreadDemo extends Thread{
    PrintDemo PD = new PrintDemo();
   
    ThreadDemo(PrintDemo pd) {
      PD = pd; 
    }
   
    @Override
    public void run() {
        System.out.println("Starting " + this.getName());
        PD.printCount(this.getName());
    }
}



Java:
package threadtest;

public class PrintDemo {
    public void printCount(String name) {
        for (int i = 0; i < 10; i++) {
            System.out.println("Counter --- " + i + " by: " + name);
        }       
    }
}
 
X

Xyz1

Gast
Wieso denn mit Threads? Das Neuzeichnen könnte ein einziger Thread erledigen.

Synchronized... brauchst du gar nicht! Es wird nicht auf ein gemeinsames Attribut zugegriffen.

Also wenn doch mit Threads:
Java:
public class Temp {

    public static void main(String[] args) {
        Thread[] threads = new Ampel[4];
        threads[0] = new Ampel("Ampel 1");
        threads[1] = new Ampel("Ampel 2");
        threads[2] = new Ampel("Ampel 3");
        threads[3] = new Ampel("Ampel 4");
        for (Thread thread : threads) {
            thread.start();
        }
    }

    private static class Ampel extends Thread {
        private String name;
        public Ampel(String name) {
            this.name = name;
        }
        @Override
        public void run() {
            try {
                while(true) {
                System.out.println(name + " grün ...");
                Thread.sleep(5000);
                System.out.println(name + " gelb");
                Thread.sleep(1000);
                System.out.println(name + " rot!");
                Thread.sleep(5000);
                }
            } catch (InterruptedException ignore) {
            }
        }
    }
}

Code:
Ampel 1 grün ...
Ampel 2 grün ...
Ampel 4 grün ...
Ampel 3 grün ...
Ampel 1 gelb
Ampel 2 gelb
Ampel 4 gelb
Ampel 3 gelb
Ampel 1 rot!
Ampel 2 rot!
Ampel 4 rot!
Ampel 3 rot!
Ampel 1 grün ...
Ampel 2 grün ...
Ampel 4 grün ...
Ampel 3 grün ...
Ampel 1 gelb
Ampel 2 gelb
Ampel 4 gelb
Ampel 3 gelb
Ampel 1 rot!
Ampel 3 rot!
Ampel 4 rot!
Ampel 2 rot!
Ampel 4 grün ...
Ampel 2 grün ...
Ampel 3 grün ...
Ampel 1 grün ...

Java:
public class Temp {

    public static void main(String[] args) {
        Thread[] threads = new Ampel[4];
        threads[0] = new Ampel("Ampel 1");
        threads[1] = new Ampel("Ampel 2");
        threads[2] = new Ampel("Ampel 3");
        threads[3] = new Ampel("Ampel 4");
        for (Thread thread : threads) {
            thread.start();
        }
    }

    private static class Ampel extends Thread {
        private static Object o = new Object();
        private static Integer num = 1;
        private String name;
        public Ampel(String name) {
            this.name = name;
        }
        @Override
        public void run() {
            try {
                while(true) {
                    synchronized(o) {
                        while (!Integer.valueOf(name.substring(6)).equals(num)) {
                            o.wait();
                        }
                        num=num%4+1;
                        o.notifyAll();
                    }
                System.out.println(name + " grün ...");
                Thread.sleep(5000);
                System.out.println(name + " gelb");
                Thread.sleep(1000);
                System.out.println(name + " rot!");
                Thread.sleep(5000);
                }
            } catch (InterruptedException ignore) {
            }
        }
    }
}

Das führt irgendwann dazu:
1.) zunächst schalten alle Ampeln gleichzeitig,
2.) dann schaltet erst Ampel 1, Ampel 2 usw. usf.

Edit: Integer und String sei in diesem Bsp. nicht optimal gewählt.
 
Also die Idee einfach ein Objekt zu erstellen, nur um ein Objekt zu haben, auf das alle zugreifen und so man die Threads "synchronisieren" kann (in Anführungszeichen, weil ich ja nicht wirklich die implementiere Synchronisations-Methode wünsche, die andere Threads auf einen Thread warten lassen, sondern dass Threads AUFEINANDER warten) bringt mich schonmal weiter.

Aber in deinem Beispiel schalten ja, wie du selbst sagst, die einzelnen Ampel nacheinander. In echt, schalten ja zwei Ampeln, die sich gegenüber liegen, gleichzeitig. Also immer Paare sind miteinander "synchron".

Ich versuche mich mal weiter mit deinem Ansatz :)


edit: Und ich möchte das mit mehreren Threads haben, weil ich eine tatsächliche Nebenläufigkeit der Ampeln implementieren will. Ich weiß, dass wenn ich alles, also alle vier Ampeln, von einem Thread zeichnen lassen würde, alles wahrscheinlich so schnell gezeichnet wird, dass mir gar nicht auffällt, welche Ampel als erstes gezeichnet wurde. Aber das ist ja dann schon irgendwie ein Fake :D Will das halt so machen, wie ich es mir vorgestellt habe :D

Aber durch die mehreren Threads kommt halt das Problem auf, dass die nicht ständig zu 110% im selben Tempo laufen. Dann fällt halt schon auf, wenn ein Thread mal für paar Millisekunden hinterherhinkt, und so das andere Paar der Ampel mal für diese paar Millisekunden länger Gelb zeigt. Und das versuche ich zu lösen.

BTW: nur falls das jemand noch nicht verstanden hat: Die Ampeln werden wirklich in einem JFrame gezeichnet, also das ist keine Konsolenanwendung :D
 

Joose

Top Contributor
Also die Idee einfach ein Objekt zu erstellen, nur um ein Objekt zu haben, auf das alle zugreifen und so man die Threads "synchronisieren" kann (in Anführungszeichen, weil ich ja nicht wirklich die implementiere Synchronisations-Methode wünsche, die andere Threads auf einen Thread warten lassen, sondern dass Threads AUFEINANDER warten) bringt mich schonmal weiter.

Aber in deinem Beispiel schalten ja, wie du selbst sagst, die einzelnen Ampel nacheinander. In echt, schalten ja zwei Ampeln, die sich gegenüber liegen, gleichzeitig. Also immer Paare sind miteinander "synchron".
Naja dann fasse doch die 2 gegenüberliegenden Ampel zusammen und lasse beiden im gleichen Thread schalten ;)
Damit bleiben immer 2 Threads über, welche halbswegs synchronisiert werden sollten.

Aber durch die mehreren Threads kommt halt das Problem auf, dass die nicht ständig zu 110% im selben Tempo laufen. Dann fällt halt schon auf, wenn ein Thread mal für paar Millisekunden hinterherhinkt, und so das andere Paar der Ampel mal für diese paar Millisekunden länger Gelb zeigt. Und das versuche ich zu lösen.
Du musst halt mitmessen wie lange ein kompletter Durchlauf gedauert hat, wenn er zu kurz gedauert hat (die Grenze musst du wissen) dann lässt du den Thread einfach mal etwas länger schlafen.
Sprich nach jedem Durchlauf gleichst du die beiden Threads wieder aneinander an.

BTW: nur falls das jemand noch nicht verstanden hat: Die Ampeln werden wirklich in einem JFrame gezeichnet, also das ist keine Konsolenanwendung :D
Wenn man es genau nimmt sollte das egal sein. Logik und UI sollten getrennt voneinander funktionieren. Es macht dir das Arbeiten auch einfacher wenn du dich vorerst nur um korrekt laufende Threads kümmern musst und deren Synchronisation. Danach kann man immer noch ein hübsches GUI draufsetzen.
 
Ich glaube, ich habe einen Ansatz, der auch zu funktionieren scheint nach ersten Tests, aber ich habe so meine Zweifel wie schön der ist, nachdem ich geschafft habe, dieses Problem, vor dem ich seit mehreren Tagen sitzt, in vllt 10 min zu lösen durch ein paar Zeilen :D

Wäre nett, wenn du oder jemand sich den anschauen könnten und mir seine Meinung dazu sagen könnte.

Thread-Klasse:
Java:
public class IntersectionDrawerThread extends Thread {
    IntersectionDrawer  trafficLight;
    /*int synch used to synchronize threads. if synch is 2 or bigger, both threads are
    finished drawing*/
    IntersectionSupervisor sup;
    int                 synch;
    //delaying threads
    int                 x;

    public void add(IntersectionDrawer trafficLight){
        this.trafficLight = trafficLight;
    }

    public void add(IntersectionSupervisor sup, int synch, int x) {
        this.sup = sup;
        this.synch = synch;
        this.x = x;
    }

    public void setSynch(int synch) {
        this.synch = synch;
    }

    @Override
    public void run() {
        try {
            sleep(x);
        }
        catch (Exception e) {
        }
        sup.setSynch(synch++);
        while (synch<2) {
            System.out.println(this.getName() + " is running!");
        }
    }       
}

Supervisor-Klasse (weiß über jeden "Ampel"-Thread Bescheid, und koordiniert bzw. synchronisiert diese):
Java:
public class IntersectionSupervisor extends Thread {
    //IntersectionDrawer[]        trafficLight;
    IntersectionDrawerThread[]  thread;
    /*int synch used to synchronize threads. if synch is 2, both threads are
    finished drawing*/
    int                            synch = 0;

    /*public void add(IntersectionDrawer[] trafficLight) {
        this.trafficLight = trafficLight;
    }*/

    public void add(IntersectionDrawerThread[] thread) {
        this.thread = thread;
    }

    public void setSynch(int synch) {
        this.synch = synch;
    }


    @Override
    public void run() {
        System.out.println("Supervisor running!");
        thread[0].add(this,synch,100);
        thread[0].start();
        thread[1].add(this,synch,300);
        thread[1].start();
        while (true) {
            System.out.println("Supervisor syncing Threads!");
            thread[0].setSynch(synch);
            thread[1].setSynch(synch);
        }
    }
}



EDIT: Da war ich wohl zu voreilig. Das funktioniert doch (noch?) nicht.
 
Zuletzt bearbeitet:
[...]
EDIT: Da war ich wohl zu voreilig. Das funktioniert doch (noch?) nicht.

Jetzt aber glaube ich wirklich, dass ich es raus habe :eek:

Java:
public class IntersectionSupervisor extends Thread {
    //IntersectionDrawer[]        trafficLight;
    IntersectionDrawerThread[]  thread;
    /*int sync & sync2 used to synchronize threads. if sync2 is 2, both threads are
    finished drawing*/
    int                            sync = 0;
    int                            sync2;
 
    /*public void add(IntersectionDrawer[] trafficLight) {
        this.trafficLight = trafficLight;
    }*/
 
    public void add(IntersectionDrawerThread[] thread) {
        this.thread = thread;
    }
 
    public void setSync(int sync) {
        synchronized(this) {
            this.sync = sync;
            this.sync2 = sync+1;
            thread[0].setSync(sync2);
            thread[1].setSync(sync2);
        }
    }
 
 
    @Override
    public void run() { 
        System.out.println("Supervisor running!");
        thread[0].add(this,sync,50);
        thread[0].start();
        thread[1].add(this,sync,100);
        thread[1].start();     
        while (sync2<2) {
            //System.out.println("Supervisor syncing Threads!");
            System.out.println("Supervisor-sync = " + sync2);
        }
        System.out.println("Supervisor is exiting... Syncing successful!");
    }
}

Java:
public class IntersectionDrawerThread extends Thread {
    IntersectionDrawer  trafficLight;
    /*int sync used to synchronize threads. if sync is 2 or bigger, both threads are
    finished drawing*/
    IntersectionSupervisor sup;
    int                 sync;
    //delaying threads
    int                 x;
 
    public void add(IntersectionDrawer trafficLight){
        this.trafficLight = trafficLight;
    }
 
    public void add(IntersectionSupervisor sup, int synch, int x) {
        this.sup = sup;
        this.sync = sync;
        this.x = x;
    }
 
    public void setSync(int sync) {
        synchronized(this) {
            this.sync = sync;
        }
    }
 
    @Override
    public void run() {
        System.out.println(this.getName() + " is running!");
        try {
            sleep(x);
        }
        catch (Exception e) {
        }
        sup.setSync(sync);
        while (sync<2) {
            System.out.println(this.getName() + " is still running!");
        }
        System.out.println(this.getName() + " is exiting!");
    }       
}
 

Joose

Top Contributor
Jetzt aber glaube ich wirklich, dass ich es raus habe :eek:

Funktioniert es denn? Dann passt es ja schon mal.

Aber natürlich gibt es ein paar Verbesserungsvorschläge:
Java:
public class IntersectionSupervisor extends Thread {
Man sollte nur von einer Klasse ableiten, wenn man deren Funktionalität erweitern will.
Daher ist es bei Threading immer besser eine Klasse zu schreiben welche das Runnable Interface implementiert, und der Thread für diese Runnable aus.

Java:
        while (sync2<2) {
            //System.out.println("Supervisor syncing Threads!");
            System.out.println("Supervisor-sync = " + sync2);
}
Diese Schleife lastet unnötigerweise die CPU aus. Hier wird Unmengen an Output erzeugt.
(Nur als Hinweis: Mit dem ExecutorService vom JavaFramework gibt es eine gute Klasse um mehrere Threads parallel zu starten und diese zu "verwalten".)
Java:
        while (sync<2) {
            System.out.println(this.getName() + " is still running!");
        }
Auch diese Schleife erzeugt einfach nur unnötig viel Output und verbraucht CPU.
Hier sollte man ein "sleep" einbauen damit nur alle X millisekunden kontrolliert wird.
 
Funktioniert es denn? Dann passt es ja schon mal.

Ja, also moment scheint alles zu funktionieren wie ich es erwartet habe. Aber habe es noch nicht mit dem JPanel versucht, sondern nur über die Konsolenausgabe. Werde ich wahrscheinlich morgen machen. War einfach zu aufgeregt, dass es geklappt hat, sodass ich das erstmal sacken lassen musste :D

Aber natürlich gibt es ein paar Verbesserungsvorschläge:
Java:
public class IntersectionSupervisor extends Thread {
Man sollte nur von einer Klasse ableiten, wenn man deren Funktionalität erweitern will.
Daher ist es bei Threading immer besser eine Klasse zu schreiben welche das Runnable Interface implementiert, und der Thread für diese Runnable aus.

Stimmt, von Runnable habe ich schon gelesen. Ergibt Sinn mit dem, dass man nur "extends Thread" benutzt, wenn man diese Klasse auch wirklich erweitern will (was das "extend" ja schon sagt... :D)

Auch diese Schleife erzeugt einfach nur unnötig viel Output und verbraucht CPU.
Hier sollte man ein "sleep" einbauen damit nur alle X millisekunden kontrolliert wird.

Ja, das habe ich mir schon gedacht, aber einen sleep einzubauen ist mir nicht eingefallen. Danke! :D Dann muss man auch nicht so viel scrollen im Output :3

(Nur als Hinweis: Mit dem ExecutorService vom JavaFramework gibt es eine gute Klasse um mehrere Threads parallel zu starten und diese zu "verwalten".)

Also hiervon habe ich noch nichts gehört. Werde ich mir mal anschauen. Bin ja gerade ziemlich im Multithreading-Bereich.


Vielen Dank für alles! Durch diesen kleinen Denkanstoß hab ich es wohl tatsächlich geschafft :3
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
C Threads und Swing Java Basics - Anfänger-Themen 9
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
B Monitor als Schranke von Threads Java Basics - Anfänger-Themen 20
W Threads Alphabet Java Basics - Anfänger-Themen 20
H Threads Anfänger Java Basics - Anfänger-Themen 17
1 Threads parallel laufen Java Basics - Anfänger-Themen 11
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
M Threads Java Basics - Anfänger-Themen 12
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
M Threads Java Basics - Anfänger-Themen 2
A Threads Java Basics - Anfänger-Themen 9
A Threads Java Basics - Anfänger-Themen 13
A Threads und .join Java Basics - Anfänger-Themen 14
W Threads starten Java Basics - Anfänger-Themen 2
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
J Wieviele threads? Java Basics - Anfänger-Themen 9
J Problem bei seriellem Start von Threads Java Basics - Anfänger-Themen 11
O Threads Java Basics - Anfänger-Themen 2
L Buchungssystem und Threads Java Basics - Anfänger-Themen 2
O Threads - Synchronize(), join(), wait(), notify(), yield() Java Basics - Anfänger-Themen 6
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
S Gemeinsame Ressource und Mehrfachinstanziierung von Threads Java Basics - Anfänger-Themen 16
S Verklemmung Threads Java Basics - Anfänger-Themen 11
B Threads 2 Threads gleichzeitig laufen lassen Java Basics - Anfänger-Themen 1
M Threads Threads laufen sequenziell, statt gleichzeitig. Java Basics - Anfänger-Themen 9
M Threads run Methode Java Basics - Anfänger-Themen 4
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
javajoshi Problem mit zwei Threads und Arrays (Runnable) Java Basics - Anfänger-Themen 12
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
S Kleine Frage zu Threads Java Basics - Anfänger-Themen 3
M Mit 2 Threads eine Zahl hochzählen Java Basics - Anfänger-Themen 13
T Threads Synchronisieren Java Basics - Anfänger-Themen 6
D Frage Threads Java Basics - Anfänger-Themen 6
Z Threads Executor Framework - Aufgabe auf n Threads aufteilen Java Basics - Anfänger-Themen 10
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
H Threads funktionieren nicht Java Basics - Anfänger-Themen 4
J Aufgabe(Threads) richtig verstanden/implementiert Java Basics - Anfänger-Themen 27
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2
J Threads Java Basics - Anfänger-Themen 38
D Alte Klausuraufgabe Threads Java Basics - Anfänger-Themen 10
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
R Threads in JavaFX Java Basics - Anfänger-Themen 3
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
F Sicheres Zurückmelden aus Threads Java Basics - Anfänger-Themen 0
G Threads zum Thema Threads??? null Ahnung Java Basics - Anfänger-Themen 4
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
J ConcurrentCalculation Multi Threads in Java Java Basics - Anfänger-Themen 3
P Threads Trotz Threads wird nur 1 Prozessorkern ausgelastet Java Basics - Anfänger-Themen 7
M "restartable" threads Java Basics - Anfänger-Themen 11
M Threads - summieren Java Basics - Anfänger-Themen 13
W Klassen Variable einer anderen Klasse ändern (Threads) Java Basics - Anfänger-Themen 3
E Threads - Programm analysieren Java Basics - Anfänger-Themen 2
E join() bei zwei Threads Java Basics - Anfänger-Themen 2
T Threads Threads richtig synchronisieren Java Basics - Anfänger-Themen 3
D [Concurrency/Threads] Code Umsetzung Schriftlich Java Basics - Anfänger-Themen 2
D Threads Java Basics - Anfänger-Themen 4
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
N Verweise auf Variablen in verschiedenen Threads Java Basics - Anfänger-Themen 4
T Java-Threads Java Basics - Anfänger-Themen 0
G Moving Objects with Threads (implements Runnable) Java Basics - Anfänger-Themen 1
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
M Problem mit Threads Java Basics - Anfänger-Themen 11
M Threads - wo gehören sie hin? Java Basics - Anfänger-Themen 3
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
J Threads Java Basics - Anfänger-Themen 3
F ExecutorService und offene Threads Java Basics - Anfänger-Themen 3
P Threads Threads nicht nebenläufig Java Basics - Anfänger-Themen 7
M Threads nicht nebenleblaufig Java Basics - Anfänger-Themen 2
B Threads parallel zur main Java Basics - Anfänger-Themen 3
M Threads Java Basics - Anfänger-Themen 2
M Threads, zwei methoden gleichzeitig laufen lassen Java Basics - Anfänger-Themen 4
M Threads und Methodenübergreifender Variablezugriff Java Basics - Anfänger-Themen 2
J Wie handle ich Threads am besten? Java Basics - Anfänger-Themen 2
H Threads Java Basics - Anfänger-Themen 10
B synchronized threads Java Basics - Anfänger-Themen 17
E Mehrmaliges Ausführen eines Threads Java Basics - Anfänger-Themen 5
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
T Alle Threads .notify() Java Basics - Anfänger-Themen 13
R Threads Verständnisschwierigkeit Java Basics - Anfänger-Themen 2
J Können mehere Threads parallel eine Datei lesen? Java Basics - Anfänger-Themen 4
G Methoden in Threads wandeln Java Basics - Anfänger-Themen 7
H Threads Java Basics - Anfänger-Themen 17
F Java Concurrency - Threads Java Basics - Anfänger-Themen 4
V Threads Threads synchronisieren Java Basics - Anfänger-Themen 4
T Threads Join() = Block? oO Java Basics - Anfänger-Themen 4
J Threads ArrayList Problem bei Threads Java Basics - Anfänger-Themen 3
C Objekte durchschleifen / Threads Java Basics - Anfänger-Themen 2
J Threads stoppen mit interrupt - Frage dazu Java Basics - Anfänger-Themen 7
N Pingen in Threads Java Basics - Anfänger-Themen 9
B Threads benutzen Java Basics - Anfänger-Themen 5
E Allgemein Verständnissfrage zum Ablauf mehrerer Threads Java Basics - Anfänger-Themen 4
S Threads erzeugen Java Basics - Anfänger-Themen 11
K Threads Nur 2 von 3 Threads funktionieren Java Basics - Anfänger-Themen 8
P Threads Methode von Threads erledigen lassen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen


Oben