Java für Fortgeschrittene - Multithreading 2 - Synchronisation von Threads [GERMAN/DEUTSCH]

preview_player
Показать описание
Nach den Techniken aus dem letzten Video, nun das Wissen, das Ihr benötigt, um die Threads zu synchronisieren.

* *Meine Website mit allen anderen Kanälen und Newsletter* *:

_Discord:_

_Unterstützt mich - Danke!:_
Рекомендации по теме
Комментарии
Автор

Du hast es geschafft nur mit den ersten beiden Videos das Thema besser zu erklären als mein Dozent in 2h Vorlesung. <333 danke dir

aisla
Автор

Immer gegen Ende des Semestern steigen die Klicks auf dem kanal :D

Adatikz
Автор

Ich hab es verstanden!! Dankeschön, du hast es super erklärt.

GK-beto
Автор

Wir ham dann also insgesamt 3 threads t1 t2 und main oder?

lukas-vaelinalsorna
Автор

Versteh ich nicht. Was genau bewirkt die Variable Counter bei synchronized?

hansdampf
Автор

semaphore sind aber nochmal was anderes oder ?

maximant
Автор

Warum genau muss ich den klump in der zwölften schon können

wodwodli
Автор

Ne kleinigkeit habe ich hier nicht kapiert: Integer counter ist ein Objekt. Das heist du übergibst beim Methodenaufruf eine Referenz. In synchronized(counter) funktioniert der Lockpool. Aus meiner Sicht müsste dann aber der Counter im ersten Thread bis 4 hochgezählt werden und im zweiter Thread auf 9 weiter gezählt werden. (Irgendwas muss ich hier ganz schön falsch verstanden haben^^). Kann mir vielleicht jemand erklären was ich hier falsch verstehe. Vielen Dank für die Antwort.

TheVeelos
Автор

Habe ich es richtig verstanden, dass bei der ersten Ausgabe, 00 11 22 33 44, die Threads quasi sich gegenseitig stören könnten bei Berechnungen, und daher das nicht synchron ist? Und mit synchronized, erst Thread 1 seine Berechnung bis zum Ende ausführen, ohne dass Thread 2 dazwischen fuscht (kritischer Bereich)? Und daher sind die Threads synchron nun ?
Und mit join, wartet z.B Thread 1 darauf, dass Thread 2 fertig wird, bevor Thread 1 weitermacht, denn sonst könnte ja thread ganz fertig sein bevor Thread 2 überhaupt startet, und die Nebenläufigkeit wäre zerstört?

Noone
Автор

Wie hast du bei 2:15 den Code eingerückt?


Ich vergesse die Tastenkombination immer :D

marli
Автор

Hallo, ich bekomme die Fehlermeldung "Integer ist a value-based type which ist a discouraged Argument for the syncronized statement"
Google hat mir nicht weiter geholfen. Kann mir jemand erklären, wie ich das Problem lösen kann?

valerianicum
Автор

hi,
ich hab mich mal gefragt, wie das ist, wenn man mehr threads als cpu kerne vorhanden sind gleichzeitig ausführt und die einzelnen threads eine endlosschleife besitzen. macht der computer dann automatisch eine art "pseudo-multithreading" wie beim menschen und wechselt einfach ganz schnell zwischen den einzelnen tasks hin und her oder würden ein paar threads gar nicht starten, weil sie auf "freie" kerne warten?
in der praxis habe ich das nämlich bei meinem fischertechnik roboter: ich habe zum beispiel ein thread mit einer endlosschleife, der die ganze zeit ein licht blinken lässt und einen anderen thread, der für die motoren da ist. wäre dies jetzt mit nur einem cpu kern überhaupt möglich?
lg und danke für deine schnellen antworten ☺

togoplays
Автор

System.out.println("Nize, Danke!");

homoculus
Автор

Die Reihenfolge ist gar nicht eindeutig bevor das synchronized eingefügt wird. Sieht wenn man in CustomThread neben dem counter noch name ausgibt.

sinth
Автор

Hättest du counter nicht einfach statisch machen können?

magiczerda
Автор

Hiho..
hab mal 'ne kleine Frage..
ich schreibe meine Fred's so, aber ich verstehe den Unterschied zu deiner Methode nicht.. ich kappier zwar das zu auf Thread extendest aber worin besteht nun der Unterschied zu "extends Runnable"? noch mein BeispielCode wie ich Fred's bastle..

public class CustomFred implements Runnable {

    private Thread thread = null;
    private boolean running = false;

    public CustomFred() {
    }

    public void run() {

        while(running) {
            // GameLoop o. was auch immer
        }
    }

    /** Start Thread */
     public synchronized void start() {
          if(running) {
               return;
          }
          running = true;
          thread = new Thread(this);
          thread.start();
     }

     /** Stop Thread */
     public synchronized void stop() {
         if(!running) {
             return;
        }
        running = false;
        try {
             thread.join();
        } catch (InterruptedException e) {
             e.printStackTrace();
        }
      System.exit(0);
    }
}

MetuLiber
Автор

Sorry, ist vllt ein bisschen zu viel erwartet, aber wäre toll praktischere Beispiele vllt in richtigen Programm zu sehen, so es ist es mir persönlich zu abstrakt um es in einem komplexeren Kontext zu verstehen anzuwenden, kp...

jahfar
Автор

Amateur. Startausgabe muss auch in synchronized.

th