Sobes.tech
Junior — Middle

Jak implementovat vícenásobné vlákno pro zpracování velkého objemu úkolů, například 10 000 úkolů?

sobes.tech AI

Odpověď od AI

Pro efektivní zpracování velkého objemu úkolů (například 10 000 úkolů) v jazyce Java je vhodné použít vláknovou pool z java.util.concurrent.

Hlavní kroky:

  1. Vytvořte ExecutorService s pevnou nebo dynamickou velikostí poolu.
  2. Odešlete úkoly ke zpracování pomocí submit() nebo execute().
  3. Počkejte na dokončení všech úkolů a správně ukončete pool.

Příklad:

import java.util.concurrent.*;

public class TaskProcessor {
    public static void main(String[] args) throws InterruptedException {
        int numberOfTasks = 10000;
        int poolSize = Runtime.getRuntime().availableProcessors();

        ExecutorService executor = Executors.newFixedThreadPool(poolSize);

        for (int i = 0; i < numberOfTasks; i++) {
            final int taskId = i;
            executor.submit(() -> {
                // Zpracování úkolu
                System.out.println("Zpracovává se úkol " + taskId);
                // ...
            });
        }

        executor.shutdown();
        executor.awaitTermination(1, TimeUnit.HOURS);
    }
}

Tento přístup umožňuje efektivně využívat CPU a řídit počet současně běžících vláken, čímž se předchází tvorbě příliš velkého počtu vláken, což by mohlo snížit výkon.