Sobes.tech
Junior — Middle

Hogyan valósítsuk meg a több szálas feldolgozást egy nagy feladatszám, például 10 000 feladat esetén?

sobes.tech MI

Válasz az MI-től

A nagy mennyiségű feladat (például 10 000 feladat) hatékony feldolgozásához Java-ban ajánlott az java.util.concurrent-ből származó szálmedencét használni.

Fő lépések:

  1. Hozzon létre egy ExecutorService-t fix vagy dinamikus mérettel.
  2. Küldje el a feladatokat végrehajtásra submit() vagy execute() segítségével.
  3. Várja meg, hogy minden feladat befejeződjön, és zárja le a medencét helyesen.

Példa:

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(() -> {
                // Feladat feldolgozása
                System.out.println("Feldolgozás alatt: " + taskId);
                // ...
            });
        }

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

Ez a megközelítés hatékonyan kihasználja a CPU erőforrásokat, és kezeli a párhuzamosan futó szálak számát, elkerülve a túl sok szál létrehozását, ami a teljesítmény csökkenéséhez vezethet.