free web page hit counter
🛡️
Copyright Notice: This video is officially sourced and embedded from YouTube. For all copyright inquiries, reports, or removals, please contact YouTube's legal team here.
Jonas Keil

Jonas Keil

92,800 subscribers

👁 27,020 views

Multithreading in Java erklärt: So machst du dein Programm schneller! (In 15 Min)

Video Overview & Insights

Multithreading ist kein einfaches, dafür aber ein sehr spannendes Thema. In diesem Video zeige ich dir, was es mit Multithreading in Java auf sich hat und wie du mit Threads in Java richtig arbeitest.

🎉Wenn dir die Videos gefallen, dann unterstütze mich auf Patreon : https://www.patreon.com/JonasKeil
📢Als Community Java lernen (Discord) : https://discord.gg/wkWe3FvdSu
🚀Lerne Java in einer Playlist : https://bit.ly/3GKMucx

— @JonasKeil

0:00 Einleitung

0:09 Multithreading: Theorie

public class Main {

public static void main(String[] args) {

ThreadMaker tm1 = new ThreadMaker();
ThreadMaker tm2 = new ThreadMaker();


tm1.hintergrundAktion(() -> {
for(int i = 0; i<=10; i++) {
if(i%2 == 0) {
System.out.println(i);
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});

tm2.hintergrundAktion(() -> {
for(int i = 0; i<=10; i++) {
if(i%2 != 0) {
System.out.println(i);
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}

}else {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
}

— @djnobody100

2:05 Einen Thread erstellen - 1. Methode

4:16 Thread.sleep() - Counter erstellen

Hi Jonas, vielen Dank für deine tollen Video! Zum Thema Threads wäre vielleicht noch ein fortgeschrittenes Video gut, welches z.B. folgende häufige Situation behandelt: In einer GUI (Swing) hat man z.B. eine JTextArea und eine JProgressbar. Das Programm soll bspw. eine Datei einlesen und Zeilenweise in die TextArea schreiben. Gleichzeitig soll die JProgressbar hochgezählt werden. Nur so als Idee. LG

— @chrisp267

5:20 Einen Thread erstellen - 2. Methode

7:20 Vorstellung Praxisbeispiel

Lieber Jonas, wann kommt das uns allen versprochene Erklärungsvideo zu Streams?

— @AlfredNrejaj-pn9jd

8:06 Praxisbeispiel - ThreadMaker

10:02 Praxisbeispiel - Hauptprogramm

Ich liebe deine videos. Kuss

— @mabroukabd3341

12:50 Thread.sleep() vs thread.join()

14:38 Challenge für dich

Was genau macht der Try catch Block?

— @kent937

15:06 Infos

📚Das könnte dich auch interessieren:

Macht richtig Spaß zuzuschauen!

— @yoriiroy1720

- Exceptions in Java: https://www.youtube.com/watch?v=O1yJ9wvlviA

- Java Streams Tutorial: https://www.youtube.com/watch?v=z-P3lH7YoxU

Danke dir, sehr schön und einfach erklärt

— @kavoos1000

- Generics in Java für Fortgeschrittene: https://www.youtube.com/watch?v=dPL8FzVJ9Kw

🌟Hier nochmal eine kurze Erklärung zu Multithreading:

Danke für das Video! :)

Hier meine Lösung:

public class Main {

public static void main(String[] args) {

Thread thread1 = new Thread(new Runnable() {

@Override

public void run() {

for (int i = 0; i <= 10; i += 2) {

System.out.println(i);

try { Thread.sleep(1000); }

catch (InterruptedException e) {

e.printStackTrace();

}

}



}

});



Thread thread2 = new Thread(new Runnable() {

@Override

public void run() {

for (int i = 1; i < 10; i += 2) {

try { Thread.sleep(500); }

catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(i);

try { Thread.sleep(500); }

catch (InterruptedException e) {

e.printStackTrace();

}

}



}

});



thread1.start();

thread2.start();

}

}

— @piarina

Mit Multithreading wollen wir eigentlich nur erreichen, dass unser Programm in der Lage ist, mehrere Dinge gleichzeitig zu tun! Dann arbeitet unser Hauptprogramm (der Main Thread) zusammen mit vielen weiteren Threads zusammen. Multithreading bedeutet also einfach nur, dass wir die Performance (die Leistung) unseres Programms verbessern wollen, indem wir mehrere Threads gleichzeitig laufen lassen.

Einen Thread kannst du dir vorstellen wie ein eigenes kleines "Miniprogramm" in dem der Code parallel zum Hauptprogramm ausgeführt wird. Wie genau du dir Threads erstellen und starten kannst zeige ich dir in diesem Video.

Vielen Dank für deine Videos . Sehr hilfreich und verständlich erklärt, auch für etwas in die Jahre gekommene Neueinsteiger :) Hier meine Lösung zur Challenge:

public class Main {

public static void main(String[] args) {



Threadmaker.lassImHintergrundLaufen(new Runnable() {

@Override

public void run() {

for (int i = 0; i < 11; i++) {

if(i % 2 != 0) {

try {

Thread.sleep(1010);

} catch (InterruptedException e) {

throw new RuntimeException(e);

}

System.out.println(i);

} else {

continue;

}

}

}

});



for (int i = 0; i < 11; i++) {

if(i % 2 == 0) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

throw new RuntimeException(e);

}

System.out.println(i);

} else {

continue;

}



}

}

}

— @davidta584

🚀 Lerne #Java in einer Playlist - https://bit.ly/3GKMucx

Threads in Java können am Anfang kompliziert erscheinen... aber sicher wirst du es trotzdem verstehen! :) Meinen Respekt, wenn du neben dem #Tutorial mitmachst und dich an den Challenges versuchst! Dann wirst du Multithreading in Java wirklich verinnerlichen!

Moin Jonas, wieso braucht die run-Methofe in dem Fall einen try-catch-Block? Meine intuition hätte mir gesagt, ich kündige die exception einfach im methodenkopf an. Danke für deine Videos, immer, wenn ich nen Java-Tutorial brauche, suche ich in deinem Kanal :D!

— @zeeerux

Lass mich in den Kommentaren wissen ob dir dieses Video geholfen hat, Threads und Multithreading besser zu verstehen!

👾 Code aus den Tutorials: https://github.com/Jonas-Keil/learn-java

Einwandfrei erklärt! Vielen Dank.

— @sirartorias1330

============

🔔 Abonniere um kein weiteres Video zu verpassen: https://www.youtube.com/c/JonasKeil?sub_confirmation=1

Hi Mister Keil, ich muss schon sagen: "DAS war Mindblowing!" 🤯 Das ist mein erstes Video von Dir und ich habe Deinen Channel direkt mal Abonniert! 😌Ich habe erst vor kurzem angefangen mit Objekt_Orientierter_Programmierung (eigtl. Java an sich) und ich hab sehr VIEL verstanden! DANKE dafür und weiter so! 👍Liegt vermutlich an Deiner besonderen Art einen an der Hand zu nehmen und Stück für Stück durch den Code zu begleiten. Auch wenn es mühselig ist, erklärst Du im Detail! wie man von hier nach da kommt und was da eigentlich passiert etc.👏 - das hilft sehr auch bisher gelerntes zu vertiefen. Was toll ist, dass Du unterschiedliche Werkzeuge vorstellst um ein Problem zu lösen-was mich animiert die Lambda-Geschichte mal zeitnah anzuschauen. 👀Cool finde ich Deine Challenge(s) am Ende - gibt's hierzu auch Musterlösung(en) im Github o.ä.? PS: Kannst Du (oder gerne auch ein anderer) mir sagen wie das mit dem "IntelliJ" funktioniert? Das Addon ("React Buddy") hat bei mir auf Eclipse nicht geklappt - Hast Du evtl. eine Anweisung hierfür oder benutzt Du was anderes? 🤔- vielen Dank im Voraus und agaib: Weiter so!😎👍

— @FIRSTBLAME

============

📢 Link zur Discord-Community: https://discord.gg/wkWe3FvdSu

Ballerst einfach durch das ganze Video double time

— @apologetik8830

============

🎉 Wenn dir meine Videos gefallen, unterstütze mich auf Patreon: https://www.patreon.com/JonasKeil

Du erklärst diesen try dingens so schnell.. als ob jeder wüsste worüber du redest 😂 chill mal junge

— @DänemarkBlog

▬👇🏻Hilfreiche Links👇🏻 ▬▬▬▬

1. Java IDEA 💻 aus den Videos: https://www.jetbrains.com/de-de/idea/download/

Ein tolles Video, vielen Dank!
Es wäre sehr cool, wenn du noch ein Video für Streams machst :)

— @omaral3338

2. Links zu meinem Equipment 🛠: https://kit.co/JonasKeil/studio-setup

3. Musik 🎶 aus allen Tutorials: https://www.epidemicsound.com/referral/tm20ft

Sehr interessantes Video!
Hier meine Lösung zur Challenge am Schluss:

// 1.Klasse:
public class MyRunnable1 implements Runnable {

@Override

public void run() {

for (int i = 0; i <= 10; i += 2) {

System.out.println("Gerade Zahlen bis Zehn: " + i);

}

}

}

//2.Klasse:
public class MyRunnable2 implements Runnable {

@Override

public void run() {

for (int i = 1; i <= 10; i += 2) {

System.out.println("Ungerade Zahlen bis Zehn: " + i);

}

}

}

//Main Klasse:
public class Main {

public static void main(String[] args) {

MyRunnable1 runnable1 = new MyRunnable1();

MyRunnable2 runnable2 = new MyRunnable2();

Thread thread = new Thread(runnable1);

Thread thread2 = new Thread(runnable2);

thread.start();

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println();

thread2.start();

}

}


Kürzere Version mit Anwendung anonymer Runnable Klassen (alles in einer Klasse):

public class Multithreading {



public static void main(String[] args) {



Thread thread1 = new Thread(new Runnable() {



@Override

public void run() {

System.out.println("Gerade Zahlen bis 100:");

try {

Thread.sleep(1000);

for (int i = 2; i < 100; i += 2) {

System.out.println(i);

Thread.sleep(100);

}

} catch (InterruptedException e1) {

e1.printStackTrace();

}



}

});



thread1.start();

try {

thread1.join();

} catch (InterruptedException e) {

e.printStackTrace();

}



Thread thread2 = new Thread(new Runnable() {



@Override

public void run() {

System.out.println("Ungerade Zahlen bis 100:");

try {

Thread.sleep(1000);

for (int i = 1; i < 100; i += 2) {

System.out.println(i);

Thread.sleep(100);

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});



thread2.start();



}

}

— @maxiviehauser7041

4. Java Bücher📚 die ich dir empfehlen kann: https://kit.co/JonasKeil/die-besten-java-bucher

▬✨Über diesen Kanal✨ ▬▬▬▬

Wirklich toll gemacht, erklärt und veranschaulicht! Ich persönlich fände es allerdings noch wichtig, das Thema ExecutorServices zu ergänzen, da diese Methode des Multithreadings in Java für mich einfach deutlich praktikabler als der „ThreadMaker“ im Video ist. :)

— @kontrollbereich8089

Du bist Student oder Schüler und möchtest Java Lernen, weißt aber nicht wo du anfangen sollst? Dann bist du auf diesem Kanal genau richtig!

Du findest auf diesem Kanal einen Leitfaden, der dir dabei hilft als Java Anfänger Schritt für Schritt Java zu lernen. Ich weiß, dass das nicht immer leicht ist und gebe mein Bestes, dir das Ganze so gut wie möglich zu erklären :) Viel Spaß!!

Und mal wieder top Video!!!
Glaube, das Multithreading ist richtig mächtig! Freue mich schon, wenn meine Programmierversuche irgendwann den Umfang annehmen werden, bei dem das von Nöten sein wird. :)

Hier meine Lösung: (die ThreadMaker Klasse poste ich hier jetzt mal nicht... die ist 1:1 von dir geklaut :S)

package youTube.keilJonas;



public class ZaehlenMitFaeden {



public static void main(String[] args) {



System.out.println("Programmstart...");



ThreadMaker.hintergrundProzess(new Runnable() {





@Override

public void run() {

for (int i = 1; i < 11; i++) {



try {

Thread.sleep(1000);

} catch (Exception e) {

System.out.println("Aua!");

}



if (i%2==0) {

System.out.println(i);

} // Ende if

} // Ende for







} // Ende .run()

});





ThreadMaker.hintergrundProzess(new Runnable() {

@Override

public void run() {

for (int i = 1; i < 11; i++) {



try {

Thread.sleep(1000);

} catch (Exception e) {

System.out.println("Aua!");

}



if (i%2==1) {

System.out.println(i);

} // Ende if

} // Ende for

} // Ende .run()

});



} // Ende main-Methode



}

— @OettingerPirat

Jonas Keil❤

#Programmieren #Java

Du kannst echt gut erklären, nach 5 Videos, war deins das Beste. Danke dir!

— @hamzaa7335

PS: Einige der Links in dieser Beschreibung sind Affiliate-Links, von denen ich eine Rückvergütung erhalte :)

hey jonas, bin mit deiner playlist jetzt durch! vielen Dank dir für deine Hilfe und die krassen Erklärungen und Vereinfachungen.

Eine Frage hätte ich dennoch zum Schluss, und zwar bin ich ja jetzt alle Videos durch (und habe auch alle codes rausgeschrieben) und somit alle Themen die du in der Playlist hattest auch, jetzt frage ich mich nur noch, ist das Alles Alles in Java ? Also sind das alle Themen in Java und es gibt quasi keine anderen Themen mehr und das alles ist das gesamte Spektrum an Java und alles was ich jetzt nur noch machen müsste wäre das gelernte Wissen durch eigene Programme anzuwenden oder ? Oder ist das alles erst sowas wie ein Anfang in die noch riesigere Programmiersprache Java?
Hoffe du verstehst meine Frage.
Liebe Grüße

— @yavuzsimsek1890

More User Perspectives

@

wie kann ich hier nun prüfen ob die threads beim letzten beispiel auch wirklich im hintergrund laufen... habe versucht mehrere threads nacheinander zu erzeugen doch bei der ausgabe sehe ich dass die sachen nacheinander ausgegeben werden und nicht zusammen...

@wee8149
@

Ich sitzt hier einfach in meim Wirtschaftsinformatik Studium und du hast mir das Thema besser erklärt als mein Prof xD
Find ich super nice, mach bitte weiter so!!

@yurikojuui3909
@

Bitte bitte bitte höre nicht auf mit deinen Tutorials!!! Mit dir macht Java endlich spaß.. und selbst schwierige Themen verstehe ich spielend leicht! Du hast ein Talent dafür, weiter so!!! <3

@benschnitter4057
@

beste Java Videos, vielen dank! und du bist auch sehr hübsch!Schönen Tag noch!

@lyn8964
@

Jonas komm nicht auf eine Idee deine Videos zu löschen oder so ähnliches :D Und wenn du sowas machst, dann sag mir bescheid, ich lade alle deine Java Tutorials runter.

@smileysforever
@

Bro du bist Gold wert danke dir 🙏🏽

@SPIONAT
@

ich hab mal noch n kleinen Tip für Anfänger, die IntelliJ nutzen. Gebt mal beim erstellen der Main Methode einfach psvm ein und drückt enter oder klickt den Vorschlag von Intelli an :)

@linuxonkel8053
@

Ich habe mir deine Playlist zu OOP von Java angeschaut. Sehr einfach und lehrreich erklärt, vielen Dank für den sehr guten Content. Verdienst auf jedenflall mehr Aufmerksamkeit.

@EC007
@

Tolle Videoreihe, weiter so :D

@dudewithdonuts7639