Benutzer-Werkzeuge

Webseiten-Werkzeuge


parallelism:start

Dies ist eine alte Version des Dokuments!


Nebenläufige Prozesse

  • Da mit steigender Taktfrequenz von Mikroprozessoren ihre Abwärme zunimmt, stößt die Technik hier an eine Grenze, die nur überwunden werden kann, indem viele Prozessorkerne gleichzeitig an einer Aufgabe arbeiten.
  • Von modernen Betriebssystemen wird erwartet, dass sie es ermöglichen, sehr viele Prozesse (meist mehr als Prozessorkerne verfügbar sind) gleichzeitig ablaufen zu lassen.

Welche Herausforderungen dies in der Softwartechnik zur Folge hat und wie die auftretenden Probleme gelöst werden können, erfahren Sie in diesem Kapitel.

Begriffe

  • Ein laufendes Programm zusammen mit dem ihm gerade zugeordneten Ressourcen (z.B. Speicherbereiche, offene Dateien, Netzwerkverbindungen) bildet einen Prozess (engl.: process).
  • Innerhalb eines Prozesses gibt es ein- oder mehrere nebenläufig (parallel, engl.: concurrently) laufende Ausführungsstränge (engl.: Threads), die die Befehle des Programms abarbeiten.
  • Sind mehrere Prozessorkerne vorhanden, so können Threads gleichzeitig ausgeführt werden. Nebenläufigkeit liegt aber auch vor, wenn das Betriebssystem dafür sorgt, dass ein Prozessor die Anweisungen mehrerer Threads abwechselnd ausführt (z.B. 10 Anweisungen des ersten Threads, dann 10 des zweiten, dann 10 des ersten usw.).

Threads in Java

Jedes Objekt der Klasse Thread besitzt eine Methode run, die dann in einem neuen Thread ausgeführt wird, wenn dieser durch Aufruf der Methode start gestartet wird.

Um Code in der Methode run unterzubringen, gibt es zwei Möglichkeiten:

  • Wir schreiben eine Unterklasse von Thread und überschreiben die Methode run.
  • Wir schreiben eine Klasse (z.B. MyRunnable), die das Interface Runnable implementiert und damit verpflichtet ist, eine Methode run zu besitzen. Beim Instanzieren des Thread-Objekts übergeben wir ihm ein MyRunnable-Objekt.

Beispiel 1: Überschreiben der run()-Methode

Beispiel 2: Eigene Klasse, die Runnable implementiert

parallelism/start.1734679328.txt.gz · Zuletzt geändert: 2024/12/20 07:22 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki