Threading in Java

Wenn man von Threading in Java spricht, meint man die Aufteilung von einem Programm. Die Aufteilung eines Programms in mehrere kleine Prozesse macht durchaus Sinn. Man kann diese Prozesse dann parallel verarbeiten lassen und somit das Programm deutlich schneller machen. Man nennt die parallele Verarbeitung in Java Multithreading. Multithreading eignet sich vor allem in Anwendungen, die auf Großrechnern laufen, da diese meistens mehrer Prozessoren haben, und somit mehrere Aufgaben gleichzeitig ausführen können. Man nennt diese Art von Rechnern dann Mehrprozessor- Rechner.

Nur wenige Rechner im privaten Bereich sind Mehrprozessor- Rechner, die echtes Multithreading betreiben können. Die meisten Rechner sind Einprozessor- Rechner, die nur eine parallele Verarbeitung simulieren können. Dein Rechner kann auch mehrere Prozesse zur gleichen Zeit durchführen, aber nur mit hilfe eines “Schedulers”, der die CPU-Zeit für alle laufenden Anwendungen managt. Laufen also mehrere Anwendungen auf deinem Rechner, wird diesen nach verschiedenen Faktoren ständig CPU-Zeit zugewiesen. Ohne einen Scheduler wäre es nicht möglich mehrer Programme auf einem Rechner laufen zu lassen. Glücklicherweise stellen alle geläufigen Betriebssysteme Scheduler bereit.

In Java Programmen lässt sich auch eine Parallelität programmieren. Den Scheduler und die simulierten Threads muss man jedoch immer selber programmieren. Java stellt hierfür keinen Scheduler zur Verfügung.Java macht somit aus jedem Programm standarsgemäß einen Thread. Wir werden dir nun Schritt für Schritt zeigen, wie du in Java dein erstes Multithreading Programm selber schreiben kannst. Für die Thread Programmierung benötigst du die Java Standardklasse Thread, die das Interface Runnable implementiert.

Wie funktioniert ein Thread in Java?

Nun noch eine Erklärung zu den einzelnen Methoden von Thread:

Methoden von Thread

Von Object geerbte Methoden

Hier die Klassen Beziehungen zwischen Object und Thread und dem Interface Runnable:

Nun hast du die Methoden von Thread verstanden und bist bereit dein erstes Programm mit mehreren Threads zu programmieren. In unserem Beispiel wollen wir einen Handwerker programmieren, der bei einem Kunden Fliesen verlegt. Beim Fliesen Verlegen nimmt er die Fliese erst in die Hand und verlegt sie dann. Wenn der Handwerker die Fliese in die Hand nimmt, benutzt er den ersten Thread. Wenn er dann die Fliese verlegt, benutzt er den 2. Thread. Hier ist der Code des Programms:

Das Beispielprogramm: Handwerker

Hier die Methoden Annehmen() und Verlegen():

Der erste Thread:

Der zweite Thread:

Hier der Handwerker als Steuerungsklasse:

Wenn du das Programm selber testen möchtest, kannst du es hier gerne herunterladen: