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