Vorlesung Informatik 2 - Teil A: Java Kurs

4.1 Einfache Parallelverarbeitung

Heutige Prozessoren können nicht mehr schneller getaktet werden, solange sie mit Strom arbeiten. Verbesserungen in der Verarbeitungsgeschwindigkeit kann man deshalb fast nur noch durch Parallelverarbeitung erreichen. Wenn ein Prozessor mehrere Kerne hat, kann er mehrere Prozesse gleichzeitig ausführen, das kann man z.B. im Windows Task-Manager beobachten. 

In Java gibt es die Möglichkeit, mehrere Unterprozesse (Threads) parallel nebeneinander zu lassen. Wir verwenden das in den Übungen 10 und 11, wo wir mehrere Sortieralgorithmen gleichzeitig starten können.  Ein Thread ist ein Teilprozess, der sich mit anderen  Threads des gleichen Prozesses Ressourcen teilt, vor allem Hauptspeicher und Zugriff auf offene Dateien.

Das Programmieren von parallelen Algorithmen kann sehr anspruchsvoll sein, wenn die Prozessen untereinander kommunizieren oder auf gemeinsame Daten zugreifen. Wir benötigen nur ein rudimentäres Grundwissen, um parallele Prozesse zu starten, die unabhängig voneinander laufen:

Die Klasse Thread ist ein solcher Teilprozess, sie hat folgende Methoden:

  • Einen Konstruktor: Thread(r:Runnable)  das Interface Runnable behandeln wir gleich.
  • Die Methoden start() und inetrrupt() zum steuern der Ausführung (es gibt auch eine stop() Methode, aber die ist überholt und nur noch aus historuischen Gründen da).

Um einen eigenen Thread aufzusetzen braucht man also eine Klasse, die das Interface Runnable implementiert, welche die Methode public void run() fordert.:

public class Arbeiter implements Runnable{
    @Override
    public void run(){    // beim Start des Thread wird diese Methode ausgeführt
       ...
    }
}


Lehrvideo  (YouTube)