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
  • Giới thiệu về đa luồng: tại sao cần

    JAVA 25 SELF
    Cấp độ 51,Bài học 0
    Vì sao chương trình cần luồng và tính song song: từ giao diện phản hồi tốt đến việc tận dụng tất cả lõi của bộ xử lý. Phân tích sự khác nhau giữa tiến trình và luồng, vai trò của luồng chính main trong JVM, các trường hợp thực tiễn (UI, máy chủ, xử lý tệp) và rủi ro: race condition, deadlock, cũng như các công cụ đồng bộ cơ bản như synchronized. Sẽ có ví dụ đơn giản với Thread và chạy hai tác vụ song song.
    Có sẵn
  • Khởi chạy luồng: Thread và Runnable, cú pháp

    JAVA 25 SELF
    Cấp độ 51,Bài học 1
    Trong bài giảng này, chúng ta tìm hiểu cách khởi chạy luồng trong Java: làm quen với lớp Thread và interface Runnable, học cách gọi start() đúng cách và không nhầm với run(), dùng lớp ẩn danh và biểu thức lambda, khởi chạy nhiều luồng và xem vòng đời ( NEW → RUNNABLE → TERMINATED). Cũng sẽ nói về các phương thức Thread.currentThread(), getName(), chờ bằng join() và các lỗi điển hình như IllegalThreadStateException.
    Có sẵn
  • Trạng thái và vòng đời của luồng

    JAVA 25 SELF
    Cấp độ 51,Bài học 2
    Phân tích vòng đời của luồng trong Java: từ Thread.State (
    NEW
    ,
    RUNNABLE
    ,
    BLOCKED
    ,
    WAITING
    ,
    TIMED_WAITING
    ,
    TERMINATED
    ) đến các chuyển trạng thái giữa chúng. Học cách quản lý luồng bằng Thread.sleep(...), join(), interrupt(), chẩn đoán trạng thái qua isAlive() và getState(), cũng như tránh các phương thức lỗi thời như stop()/ suspend()/ resume(). Cuối cùng — mẹo thực hành và lỗi thường gặp.
    Có sẵn
  • Tham số và mức ưu tiên của luồng

    JAVA 25 SELF
    Cấp độ 51,Bài học 3
    Cách truyền tham số vào luồng một cách an toàn thông qua constructor của lớp triển khai Runnable, khi nào nên dùng biểu thức lambda, và vì sao nên khai báo các trường là final. Phân tích mức ưu tiên của luồng: các phương thức setPriority/ getPriority, các hằng Thread.MIN_PRIORITY, Thread.NORM_PRIORITY, Thread.MAX_PRIORITY và ảnh hưởng của chúng tới bộ lập lịch. Thêm nữa — đặt tên luồng qua constructor, setName/ getName, ví dụ thực hành và các lỗi thường gặp (dùng chung Runnable, setter, kỳ vọng vào mức ưu tiên).
    Có sẵn
  • Tình trạng tranh chấp (race condition)

    JAVA 25 SELF
    Cấp độ 51,Bài học 4
    Trong bài giảng này, chúng ta tìm hiểu race condition là gì: khi nhiều luồng đồng thời truy cập dữ liệu dùng chung và kết quả phụ thuộc vào thứ tự lập lịch. Với ví dụ phép tăng counter ++, chúng tôi cho thấy vì sao thao tác này không nguyên tử và vì sao các lần tăng có thể bị mất. Xem xét một case thực tế với tài khoản ngân hàng, các hậu quả trên production và các cách bảo vệ: synchronized, các kiểu nguyên tử từ java.util.concurrent.atomic (ví dụ, AtomicInteger), cũng như tính bất biến (immutability). Kết thúc bằng phần “Lỗi thường gặp”, giải thích vì sao bug liên quan đến Thread hiếm khi bị test bắt được và vì sao “chữa” chúng bằng Thread. sleep( 1) là vô nghĩa.
    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