Sobes.tech
Junior — Middle

Kako implementirati višestruko pokretanje niti za obradu velikog broja zadataka, na primer 10.000 zadataka?

sobes.tech АИ

Одговор од АИ

Za efikasnu obradu velikog obima zadataka (na primer, 10.000 zadataka) u Javi je preporučljivo koristiti pool niti iz java.util.concurrent.

Glavni koraci:

  1. Kreirajte ExecutorService sa fiksnom ili dinamičkom veličinom poola.
  2. Pošaljite zadatke na izvršenje putem submit() ili execute().
  3. Sačekajte da se svi zadaci završe i pravilno zatvorite pool.

Primer:

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(() -> {
                // Obrada zadatka
                System.out.println("Obrada zadatka " + taskId);
                // ...
            });
        }

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

Ovaj pristup omogućava efikasno korišćenje CPU resursa i upravljanje brojem istovremeno izvršavanih niti, izbegavajući kreiranje prevelikog broja niti, što može dovesti do smanjenja performansi.