Java enthält Threads und Synchronisierungsmechanismen:
Klasse Thread, u.a. mit Methoden run() und start()
Synchronisation durch Monitore mit dem Methoden-Attribut synchronize
Synchronisation durch Bedingungsvariable mit den Methoden wait() und notify() aus der Basisklasse Object.
Thread-Version in Java (Source)
Erzeugen von Threads:
Klasse von Thread ableiten
Objekt thread erzeugen mit new
Thread starten mit thread.start()
Koordinierung der Threads:
alle neuen Threads führen run() aus
terminieren, wenn run beendet wird
Master-Thread wartet auf die anderen mit thread.join()
Sichtbarkeit von Variablen:
Klassenvariable (static) global für alle Threads dieser Klasse
"normale" Instanz-Variable lokal für jedes Objekt = Thread
Eindeutige Thread-Nummer als Argument beim Konstruktor-Aufruf
Laufzeiten (für n = 1*108) :
CPUs | 1 | 2 | 4 | 8 |
Zeit/s | 109.8 | 83.1 | 60.7 | 59.4 |
Speedup | 1 | 1.3 | 1.8 | 1.8 |