Bắt đầu ngayBắt đầu miễn phí

Tạo các luồng song song để xử lý

Bạn đang phát triển một ứng dụng phân tích tài chính cần xử lý số lượng giao dịch rất lớn. Mỗi giao dịch yêu cầu các phép tính ngốn CPU. Ứng dụng hiện đang chạy tuần tự nên quá chậm. Nhiệm vụ của bạn là triển khai giải pháp đa luồng để cải thiện hiệu năng.

Lớp Transaction đã được nạp sẵn cho bạn.

Bài tập này là một phần của khóa học

Tối ưu hóa mã trong Java

Xem khóa học

Hướng dẫn bài tập

  • Tạo các Thread sẽ chạy processTransaction().
  • Khởi động tất cả các luồng.
  • Chờ tất cả các luồng hoàn thành.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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;
    }
}
Chỉnh sửa và Chạy Mã