Crear hilos en paralelo para el procesamiento
Estás desarrollando una aplicación de análisis financiero que necesita procesar un gran número de transacciones. Cada transacción requiere cálculos intensivos de CPU. La aplicación usa actualmente un enfoque secuencial, pero es demasiado lento. Tu tarea es implementar una solución con múltiples hilos para mejorar el rendimiento.
La clase Transaction ya está precargada para ti.
Este ejercicio forma parte del curso
Optimizing Code in Java
Instrucciones del ejercicio
- Crea
Threadque ejecutenprocessTransaction(). - Inicia todos los hilos.
- Espera a que todos los hilos terminen.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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;
}
}