Vấn đề an toàn luồng qua ví dụ bán vé

Khi học về lập trình đa luồng, một trong những ví dụ kinh điển để minh họa vấn đề an toàn luồng chính là bán vé. Qua tình huống này, ta có thể hiểu rõ hơn về điều kiện phát sinh và cách giải quyết vấn đề an toàn luồng. Tình huống minh họa Trường hợp 1: Chỉ có một quầy bán vé duy nhất cho 100 vé. Vì chỉ có một luồng xử lý, nên không xảy ra ...

Đăng vào ngày 1 tháng 6 lúc 23:14

Giao tiếp giữa các luồng trong Java

Giao tiếp giữa các luồng Trong bài toán sản xuất - tiêu thụ, hai luồng (sản xuất và tiêu thụ) cùng truy cập một tài nguyên chung và phụ thuộc lẫn nhau. Cụ thể: Luồng sản xuất phải thông báo cho luồng tiêu thụ khi có dữ liệu mới. Luồng tiêu thụ sau khi xử lý xong cần báo hiệu để luồng sản xuất tiếp tục tạo dữ liệu. Từ khóa synchronized g ...

Đăng vào ngày 30 tháng 5 lúc 10:28

Cơ chế Lock trong Java: Singleton, volatile, synchronized, Deadlock và In ấn xen kẽ

Từ Singleton mở rộng ra câu hỏi phỏng vấn về Lock Các điểm kiến thức liên quan: synchronized và khóa Từ khóa volatile Từ khóa final, static Mẫu Singleton Lazy Hãy bắt đầu với phiên bản đơn giản nhất của Singleton lazy (không an toàn luồng): public final class Singleton { private static Singleton instance = null; private ...

Đăng vào ngày 28 tháng 5 lúc 06:29

Xử lý đồng bộ và xung đột trong lập trình đa luồng với synchronized, wait và notify

Sử dụng synchronized để giải quyết xung đột truy cập tài nguyên chung Khi nhiều luồng cùng thao tác trên một biến chia sẻ mà không có cơ chế đồng bộ, kết quả cuối cùng thường không chính xác do hiện tượng tranh chấp (race condition). Để khắc phục, từ khóa synchronized được sử dụng nhằm đảm bảo chỉ một luồng duy nhất thực thi đoạn mã quan trọng ...

Đăng vào ngày 25 tháng 5 lúc 17:21

Phân tích mã nguồn Vector trong Java Collections Framework

Giới thiệu Vector là một cấu trúc dữ liệu tuyến tính trong hệ sinh thái tập hợp của Java, có cơ chế hoạt động gần như tương tự ArrayList. Một câu hỏi phỏng vấn phổ biến liên quan đến lớp này là: Sự khác biệt giữa ArrayList và Vector là gì? Câu trả lời thường gặp bao gồm: Vector an toàn luồng (thread-safe) Cơ chế mở rộng dung lượng khác nha ...

Đăng vào ngày 19 tháng 5 lúc 02:44