Sobes.tech
Middle

Was ist der Unterschied zwischen 'Wettbewerb' und 'Parallelität' im Kontext der Multithreading?

sobes.tech KI

Antwort von AI

Wettbewerb (Concurrency) ist die Fähigkeit eines Systems, mehrere Aufgaben gleichzeitig zu verarbeiten. Diese Aufgaben können auf einem einzigen Prozessor-Kern ausgeführt werden, wobei zwischen ihnen zeitlich gewechselt wird (Zeitteilung). Bedeutet nicht unbedingt, dass die Aufgaben zur gleichen physischen Zeit ausgeführt werden.

Parallelismus (Parallelism) ist die tatsächliche gleichzeitige Ausführung mehrerer Aufgaben zu einem physischen Zeitpunkt, unter Verwendung mehrerer Prozessor-Kerne oder mehrerer Prozessoren.

Hauptunterschied:

  • Concurrency: Verwaltung von mehreren Aufgaben, die möglicherweise gleichzeitig oder nicht ausgeführt werden. Fokus auf die Strukturierung des Programms zur Handhabung mehrerer Ausführungsthreads.
  • Parallelismus: Physische gleichzeitige Ausführung mehrerer Aufgaben. Fokus auf die Nutzung der verfügbaren Hardware-Ressourcen zur Beschleunigung der Ausführung.
// Beispiel für Concurrency (ohne Garantie für parallele Ausführung)
public class ConcurrentExample {
    public static void main(String[] args) {
        Runnable task1 = () -> System.out.println("Aufgabe 1 gestartet auf Thread: " + Thread.currentThread().getName());
        Runnable task2 = () -> System.out.println("Aufgabe 2 gestartet auf Thread: " + Thread.currentThread().getName());

        new Thread(task1).start(); // Können auf einem Kern laufen
        new Thread(task2).start(); // Können auf einem Kern laufen
    }
}
// Beispiel für Parallelismus (benötigt einen Multi-Core-Prozessor)
import java.util.List;
import java.util.Arrays;

public class ParallelExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        numbers.parallelStream() // Nutzt ForkJoinPool für parallele Ausführung
               .forEach(number -> System.out.println("Verarbeite " + number + " auf Thread: " + Thread.currentThread().getName()));
    }
}
Aspekt Concurrency Parallelismus
Ziel Verwaltung mehrerer Aufgaben Beschleunigung der Ausführung
Anforderungen Mehrere Aufgaben/Threads Mehrkernprozessor/mehrere Prozessoren
Ausführung Wechselnde Ausführung Gleichzeitige Ausführung
Frequenz Kann auf einem Kern erreicht werden Erfordert mehrere Kerne/Prozessoren
Beispiel Multitasking auf einem Ein-Kern-System Parallele Verarbeitung großer Datenmengen