Threads et ExecutorService
Un thread est un fil d'exécution parallèle. Plutôt que de les gérer à la main, on utilise un ExecutorService (un pool de threads).
import java.util.concurrent.*;
ExecutorService pool = Executors.newFixedThreadPool(4);
pool.submit(() -> envoyerEmailConfirmation(participant));
pool.shutdown();
Accès concurrent
// compteur de volume partagé, sûr en concurrence AtomicInteger volumeTotal = new AtomicInteger(0); volumeTotal.addAndGet(1500); // atomique // ou une collection concurrente Map<String,Integer> parCommune = new ConcurrentHashMap<>();
À l'approche de la clôture, de nombreux foyers s'inscrivent en même temps : le cumul du volume doit rester exact. C'est un problème de concurrence — géré côté Java par des structures sûres (AtomicInteger, ConcurrentHashMap) et côté base par les transactions. Le projet fioul illustre les deux facettes du même enjeu.
🎉 Parcours Java terminé
Des types primitifs jusqu'à la programmation parallèle, en passant par la POO, les collections, les Streams, les génériques et les tests, tu maîtrises désormais le langage dans lequel vit l'API du projet Fioul Groupé. C'est le socle direct du parcours Spring Boot. Retour au portail ou au sommaire.
- Un thread = fil parallèle ; ExecutorService gère un pool.
- Paralléliser accélère les tâches indépendantes.
- Accès concurrent : AtomicInteger, ConcurrentHashMap contre les race conditions.
- Application (Java) + base (transactions) assurent ensemble la cohérence.