Wie verarbeitet ein Java-Programm die Elemente einer Liste mit einer festgelegten Anzahl von Threads?

Antwort vom

Mit einem festen Threadpool kannst du die Elemente einer Liste mit einer selbst festgelegten maximalen Threadanzahl verarbeiten.

Kleines vollständiges Beispiel

Das Beispiel verwendet Java 21 oder neuer. Der Executor wird durch den try-with-resources-Block automatisch geschlossen; dabei wartet das Programm auf die Fertigstellung der eingereichten Aufgaben.

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ListParallel {
    public static void main(String[] args) {
        List<String> elemente = List.of(
                "Apfel", "Birne", "Kirsche", "Pflaume", "Orange"
        );

        int anzahlThreads = 3;

        try (ExecutorService executor =
                     Executors.newFixedThreadPool(anzahlThreads)) {

            for (String element : elemente) {
                executor.execute(() -> verarbeiten(element));
            }
        }

        System.out.println("Alle Aufgaben beendet.");
    }

    private static void verarbeiten(String element) {
        System.out.printf(
                "%s verarbeitet %s%n",
                Thread.currentThread().getName(),
                element.toUpperCase()
        );
    }
}

Was dabei passiert

Für jedes Listenelement wird eine Aufgabe eingereicht. Maximal drei Threads bearbeiten diese Aufgaben gleichzeitig; weitere Aufgaben warten in einer Warteschlange, bis ein Thread frei wird. Die Threadanzahl muss größer als null sein.

Wichtiger Unterschied: Du erzeugst nicht für jedes Element einen neuen Thread. Stattdessen verwenden die Aufgaben denselben festen Threadpool. Eine bestimmte Reihenfolge der Ausgaben solltest du bei paralleler Verarbeitung nicht voraussetzen.

Quellen:

Kategorie: Programmierung Unterkategorien: Programmiersprachen Java

Erstellt mit GPT-6.1 Sol (OpenAI) auf Basis einer aktuellen Websuche.

Verwandte Fragen

Welche ganzzahligen Datentypen gibt es in Java und welche Minimal- und Maximalwerte haben sie?

Java hat fünf primitive ganzzahlige Datentypen: byte, short, int, long und den vorzeichenlosen Zeichentyp char. | Datentyp | Bitbreite | Minimaler Wert | Maximaler Wert | |---|---:|---:|---:| |...

Wie setzt man in Java das Datum eines Calendar-Objekts aus einem String?

Wandle den String mit SimpleDateFormat in ein Date um und übergib dieses anschließend an Calendar.setTime(). Das folgende Beispiel liest ein Datum im Format „Tag.Monat.Jahr“ ei...

Wie verwendet man einen Datumsparameter in einer Hibernate Query?

Einen Datumsparameter bindest du mit setParameter() an einen benannten Platzhalter, beispielsweise als LocalDate für ein Datum ohne Uhrzeit. Beispiel: Die Entity „Bestellung“ besitzt...

Wie setzt man in Java ein Calendar-Objekt auf morgen? Zwei Beispiele mit Bewertung

Am zuverlässigsten stellst du bei einem Calendar-Objekt mit add(Calendar.DAYOFMONTH, 1) den nächsten Kalendertag ein. Beispiel 1: Mit add(), empfohlen java import java.util.Calendar; Calen...

Welche KI-Chatbots generieren Java-Code ohne Registrierung?

Duck.ai und ChatGPT kannst du ohne Registrierung zum Generieren von Java-Code nutzen, bei ChatGPT mit möglichen Zugangseinschränkungen. Angebote ohne Konto | Angebot | Nutzung ohne Registri...

Welche Vor- und Nachteile hat PHP und welche Alternativen sind besser?

PHP ist nicht pauschal schlechter: TypeScript bietet frühere Typprüfungen, Python mit Django viele fertige Webfunktionen, jeweils mit eigenen Nachteilen. „Umständlich und nervig&...

Wie migriert man ein PHP-5.6-Skript auf PHP 8.4?

Ja, ein PHP-5.6-Skript lässt sich auf PHP 8.4 migrieren, aber entfernte Funktionen und geändertes Verhalten erfordern Anpassungen. Ein bloßer Wechsel der Serverversion reicht nicht zu...