CodeGym
AI Academy
Khuyến mãi
CodeGym University
Học tập
Khóa học
Bài tập
Khảo sát & Bài kiểm tra
Trò chơi
Trợ giúp
Lịch
Cộng đồng
Người dùng
Diễn đàn
Trò chuyện
Bài viết
Câu chuyện thành công
Hoạt động
Đánh giá
Gói đăng ký
Chủ đề sáng

Bài học

  • Đánh giá
  • Về chúng tôi
Bắt đầu
Bắt đầu học
Bắt đầu học ngay
  • Tiến độ của tôi
  • Khóa học
  • Bản đồ Quest
  • Bài học
  • Tài nguyên dùng chung và đồng bộ: vấn đề truy cập

    JAVA 25 SELF
    Cấp độ 52,Bài học 0
    Bài giảng này nói về tài nguyên dùng chung trong ứng dụng đa luồng là gì, vì sao xuất hiện race condition và “lost update”, và cách bảo vệ dữ liệu bằng synchronized. Chúng ta sẽ tìm hiểu các kỹ thuật đồng bộ cơ bản (phương thức và khối), nói về các công cụ hiện đại trong java.util.concurrent ( Lock, ReentrantLock, Semaphore, v.v.), xem các ví dụ thực tế với việc tăng bộ đếm và những lỗi thường gặp (tính không nguyên tử của i ++, đối tượng khóa không đúng, các “huyền thoại” về volatile).
    Có sẵn
  • synchronized, volatile: cú pháp, cách sử dụng

    JAVA 25 SELF
    Cấp độ 52,Bài học 1
    Bài giảng thực hành về đa luồng: phân tích cách hoạt động của từ khóa synchronized (khối và phương thức, monitor của đối tượng và khóa ở cấp lớp ClassName.class), sự khác nhau giữa khả năng hiển thị thay đổi qua volatile và tính nguyên tử của các thao tác, vì sao các cờ boolean nên khai báo là volatile, còn phép tăng count ++ thì cần đồng bộ hóa. So sánh khi nào chọn synchronized và khi nào — volatile, đồng thời phân tích các lỗi thường gặp.
    Có sẵn
  • ReentrantLock và ReadWriteLock: khác biệt, ví dụ

    JAVA 25 SELF
    Cấp độ 52,Bài học 2
    So sánh thực tiễn đồng bộ hóa cổ điển bằng synchronized với các primitive linh hoạt hơn trong gói java.util.concurrent.locks: ReentrantLock và ReadWriteLock. Cùng xem cách điều khiển khóa một cách tường minh ( lock()/ unlock(), tryLock() với timeout), cách mở rộng đọc với ReentrantReadWriteLock, “tính công bằng” ( fair mode) là gì, mỗi công cụ phù hợp ở đâu và các lỗi thường gặp.
    Có sẵn
  • Mutex và semaphore: cú pháp và bài toán

    JAVA 25 SELF
    Cấp độ 52,Bài học 3
    Trong bài giảng này, chúng ta xem xét các primitive đồng bộ hóa cốt lõi trong Java: cách bảo vệ vùng tới hạn bằng synchronized và lớp ReentrantLock (các phương thức lock()/ unlock(), cấu trúc try- finally), cũng như cách giới hạn mức song song thông qua Semaphore (các phương thức acquire()/ release()). Chúng ta sẽ so sánh mutex và semaphore trong một bảng, xem các tình huống thực tế (ngân hàng, máy chủ có giới hạn kết nối) và các lỗi điển hình dẫn đến deadlock và suy giảm hiệu năng.
    Có sẵn
  • Phân tích các lỗi điển hình khi đồng bộ hóa

    JAVA 25 SELF
    Cấp độ 52,Bài học 4
    Phân tích thực tiễn các lỗi thường gặp của đa luồng trong Java: quên unlock()/ release() với ReentrantLock và Semaphore (khắc phục bằng try- finally), chọn sai monitor cho synchronized, deadlock và thứ tự lấy lock, đồng bộ hóa quá mức, cũng như giới hạn áp dụng của volatile và thay thế bằng AtomicInteger. Ví dụ, lời khuyên và các phép so sánh dễ hiểu — để mã không “đứng hình”.
    Có sẵn
Học
  • Đăng ký
  • Khóa học Java
  • Trợ giúp bài tập
  • Bảng giá
  • Cú pháp Java
Cộng đồng
  • Người dùng
  • Bài viết
  • Diễn đàn
  • Trò chuyện
  • Câu chuyện thành công
  • Hoạt động
  • Chương trình giới thiệu
Công ty
  • Về chúng tôi
  • Liên hệ
  • Đánh giá
  • Phòng báo chí
  • CodeGym cho EDU
  • Câu hỏi thường gặp
  • Hỗ trợ
CodeGymCodeGym là một khóa học trực tuyến để học lập trình Java từ đầu. Khóa học này là cách hoàn hảo để nắm vững Java cho người mới bắt đầu. Nó chứa 1200+ bài tập với kiểm tra ngay lập tức và phạm vi lý thuyết cơ bản cần thiết về Java. Để giúp bạn thành công trong học tập, chúng tôi đã triển khai một bộ tính năng tạo động lực: bài kiểm tra, dự án lập trình, nội dung về phương pháp học hiệu quả, và hỗ trợ sự nghiệp lập trình viên Java.
Theo dõi chúng tôi
Ngôn ngữ giao diện
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский
Vietnamese
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym
MastercardVisa
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym