Quay lại thư viện câu hỏi
concurrency Middle

Phân biệt sự khác nhau giữa Thread-safe Collections và việc sử dụng cơ chế đồng bộ hóa tường minh (Explicit Synchronization) trong lập trình đa luồng.

Định nghĩa và Bản chất

  • Thread-safe Collections (Ví dụ: ConcurrentHashMap, CopyOnWriteArrayList trong Java): Là các cấu trúc dữ liệu được thiết kế sẵn để hỗ trợ truy cập đồng thời từ nhiều luồng mà không gây ra lỗi ConcurrentModificationException hoặc hỏng cấu trúc dữ liệu nội bộ.
  • Explicit Synchronization (Ví dụ: từ khóa synchronized, ReentrantLock): Là cơ chế lập trình viên tự chủ động khóa toàn bộ một đoạn mã (Critical Section) để đảm bảo chỉ có duy nhất một luồng thực thi tại một thời điểm.

So sánh chi tiết

  1. Mức độ chi tiết (Granularity):
    • Thread-safe Collections thường áp dụng cơ chế khóa ở mức độ phần tử hoặc phân đoạn (như khóa bucket trong ConcurrentHashMap), cho phép độ đồng thời (concurrency level) rất cao.
    • Explicit Synchronization nếu áp dụng sai cách (như khóa toàn bộ phương thức hoặc đối tượng lớn) sẽ làm giảm nghiêm trọng hiệu năng do các luồng phải xếp hàng chờ đợi.
  2. Compound Operations (Thao tác kết hợp):
    • Bản thân ConcurrentHashMap thread-safe cho từng phương thức đơn lẻ (như get, put). Tuy nhiên, các thao tác kết hợp như Check-Then-Act (ví dụ: kiểm tra tồn tại rồi mới put) vẫn cần cơ chế đồng bộ hóa bên ngoài (như putIfAbsent) để tránh Race Condition.

Ví dụ minh họa lỗi kinh điển

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();

// SAI: Vẫn có thể xảy ra Race Condition giữa check và put
if (!map.containsKey("key")) {
    map.put("key", 1);
}

// ĐÚNG: Sử dụng phương thức atomic của collection
map.putIfAbsent("key", 1);

Lưu ý kinh nghiệm thực chiến

Không được chủ quan rằng cứ dùng Concurrent Collection là an toàn tuyệt đối trước mọi Race Condition. Phải nắm rõ tính atomic của từng phương thức mà Collection đó cung cấp.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề concurrency

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học