Sobes.tech
Junior — Middle

Ako implementovať viacvláknové spracovanie pre veľké množstvo úloh, napríklad 10 000 úloh?

sobes.tech AI

Odpoveď od AI

Pre efektívne spracovanie veľkého objemu úloh (napríklad 10 000 úloh) v Jave je vhodné použiť vláknový pool z java.util.concurrent.

Hlavné kroky:

  1. Vytvorte ExecutorService s pevnou alebo dynamickou veľkosťou poolu.
  2. Pošlite úlohy na vykonanie pomocou submit() alebo execute().
  3. Počkajte na dokončenie všetkých úloh a správne zatvorte pool.

Prí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(() -> {
                // Spracovanie úlohy
                System.out.println("Spracováva sa úloha " + taskId);
                // ...
            });
        }

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

Tento prístup umožňuje efektívne využívanie CPU zdrojov a riadenie počtu súčasne vykonávaných vlákien, čím sa predchádza tvorbe príliš veľkého počtu vlákien, čo by mohlo znížiť výkon.