Sobes.tech
Junior — Middle

Comment mettre en œuvre la multithreading pour traiter un grand volume de tâches, par exemple, 10 000 tâches?

sobes.tech IA

Réponse de l'IA

Pour traiter un grand volume de tâches (par exemple, 10 000 tâches), en Java, il est efficace d'utiliser un pool de threads de java.util.concurrent.

Étapes principales :

  1. Créer un ExecutorService avec une taille fixe ou dynamique du pool de threads.
  2. Envoyer les tâches à exécuter via submit() ou execute().
  3. Attendre la fin de toutes les tâches et fermer proprement le pool.

Exemple :

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(() -> {
                // Traitement de la tâche
                System.out.println("Traitement de la tâche " + taskId);
                // ...
            });
        }

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

Cette approche permet d'utiliser efficacement les ressources CPU et de gérer le nombre de threads en exécution simultanée, évitant la création d'un nombre excessif de threads, ce qui pourrait réduire la performance.