ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea Thread que ejecuten processTransaction().
  • 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;
    }
}
Editar y ejecutar código