Java Threads Tutorial: So verbesserst du dein Programm mit Multithreading!

preview_player
Показать описание
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.

0:00 Einleitung
0:09 Multithreading: Theorie
2:05 Einen Thread erstellen - 1. Methode
5:20 Einen Thread erstellen - 2. Methode
7:20 Vorstellung Praxisbeispiel
8:06 Praxisbeispiel - ThreadMaker
10:02 Praxisbeispiel - Hauptprogramm
14:38 Challenge für dich
15:06 Infos

📚Das könnte dich auch interessieren:
- Exceptions in Java:
- Java Lambda Tutorial:
- Generics in Java für Fortgeschrittene: [Wird noch produziert]

🌟Hier nochmal eine kurze Erklärung zu Multithreading:
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.

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!
Lass mich in den Kommentaren wissen ob dir dieses Video geholfen hat, Threads und Multithreading besser zu verstehen!

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

▬👇🏻Hilfreiche Links👇🏻 ▬▬▬▬

▬✨Über diesen Kanal✨ ▬▬▬▬
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ß!!

Jonas Keil❤

#Programmieren #Java

PS: Einige der Links in dieser Beschreibung sind Affiliate-Links, von denen ich eine Rückvergütung erhalte :)
Рекомендации по теме
Комментарии
Автор

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

benschnitter
Автор

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.

EC
Автор

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!!

yurikojuui
Автор

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

kavoos
Автор

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

omaral
Автор

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

hamzaa
Автор

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. :)

kontrollbereich
Автор

Es gibt noch eine wichtige Methode in der Thread Klasse und die nennt sich "synchronized". Damit kann man die Threads wunderbar aufeinander abstimmen. Also der nächste Thread wird erst ausgeführt, wenn der erste bereits abgeschlossen ist (wie in seinem Zählbeispiel), nur dass man nicht mit einem "sleep" arbeiten muss.

Aaackermann
Автор

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) {

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;
}

}
}
}

davidta
Автор

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 (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
Автор

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!

zeerux
Автор

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

lyn
Автор

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();

}
}

maxiviehauser
Автор

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 :)

linuxonkel
Автор

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

yavuzsimsek
Автор

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...

wee
Автор

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
Автор

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.

mr_koc_ac
Автор

Ballerst einfach durch das ganze Video double time

apologetik
Автор

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

marcelmalina
join shbcf.ru