Créer des threads parallèles pour le traitement
Vous développez une application d’analyse financière qui doit traiter un grand nombre de transactions. Chaque transaction nécessite des calculs intensifs sur le CPU. L’application utilise actuellement une approche séquentielle, mais elle est trop lente. Votre mission est de mettre en place une solution multithread pour améliorer les performances.
La classe Transaction a été préchargée pour vous.
Cet exercice fait partie du cours
Optimiser son code en Java
Instructions
- Créez des
Threadqui exécuterontprocessTransaction(). - Démarrez tous les threads.
- Attendez que tous les threads se terminent.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
public class TransactionProcessor {
public static void main(String[] args) throws InterruptedException {
List transactions = generateTransactions(1000);
List threads = new ArrayList<>();
for (int t = 0; t < 4; t++) {
int start = t * 250;
int end = (t == 3) ? transactions.size() : (t + 1) * 250;
// Create thread that will run processTransaction()
Thread thread = new ____(() -> {
for (int i = start; i < end; i++) {
processTransaction(transactions.get(i));
}
});
threads.add(thread);
// Start the thread
thread.____();
}
// Wait for all threads to complete
for (Thread thread : threads) {
thread.____();
}
}
static void processTransaction(Transaction tx) {
double result = 0;
for (int i = 0; i < 1000; i++) {
result += Math.sqrt(tx.amount * i);
}
tx.result = result;
}
static List generateTransactions(int n) {
List list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(new Transaction(Math.random() * 1000));
}
return list;
}
}