MulaiMulai sekarang secara gratis

Membuat thread paralel untuk pemrosesan

Anda sedang mengembangkan aplikasi analisis keuangan yang perlu memproses sejumlah besar transaksi. Setiap transaksi memerlukan perhitungan yang intensif CPU. Saat ini aplikasi menggunakan pendekatan sekuensial, tetapi terlalu lambat. Tugas Anda adalah menerapkan solusi multi-threaded untuk meningkatkan kinerja.

Kelas Transaction telah disiapkan untuk Anda.

Latihan ini adalah bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Petunjuk latihan

  • Buat Thread yang akan menjalankan processTransaction().
  • Mulai semua thread.
  • Tunggu hingga semua thread selesai.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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;
    }
}
Edit dan Jalankan Kode