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
  • Luồng so với luồng ảo: khác biệt, ưu điểm

    JAVA 25 SELF
    Cấp độ 57,Bài học 0
    Phân tích sự khác nhau giữa luồng nền tảng và luồng ảo: mô hình “ Platform Thread → OS” hoạt động ra sao và vì sao nó nặng nề, điều gì thay đổi với luồng ảo ( Virtual Thread) trên carrier threads, và cách điều đó mang lại khả năng mở rộng mà không cần “spaghetti” reactive. Xem thực hành với Thread.ofVirtual(), so sánh hành vi của tác vụ I/O‑bound và CPU‑bound, đề cập tới tính tương thích (các lời gọi chặn như InputStream.read, Socket.accept) và các lỗi điển hình (cơ chế đồng bộ cũ, kỳ vọng “tăng tốc kỳ diệu”).
    Có sẵn
  • Tạo luồng ảo: Thread.ofVirtual().start()

    JAVA 25 SELF
    Cấp độ 57,Bài học 1
    Thực hành làm việc với luồng ảo trong Java 21: chúng khác gì so với luồng nền tảng, cách khởi chạy qua Thread.startVirtualThread(...) và Thread.ofVirtual().start(...), khi nào vẫn phù hợp dùng new Thread(...) hoặc Thread.ofPlatform(), và cách thực thi hàng loạt tác vụ bằng Executors.newVirtualThreadPerTaskExecutor(). Sẽ phân tích cách chờ hoàn tất bằng join(), xử lý lỗi với Future và ExecutionException, cũng như các lỗi thường gặp khi sử dụng Virtual Threads.
    Có sẵn
  • Khả năng mở rộng và hiệu năng của Virtual Threads

    JAVA 25 SELF
    Cấp độ 57,Bài học 2
    So sánh thực tế giữa luồng nền tảng Thread và luồng ảo trong Java 21: cách JVM nhờ “ các luồng mang” (carrier threads) thực thi hàng trăm nghìn tác vụ với bộ nhớ tối thiểu, nơi luồng ảo phát huy (I/O-bound) và nơi không (CPU-bound). Phân tích các hạn chế ( synchronized, khóa native), best practices ( Executors.newVirtualThreadPerTaskExecutor()), giám sát bằng JVisualVM và Java Flight Recorder, cũng như các lỗi điển hình khi chuyển sang Virtual Threads.
    Có sẵn
  • Sử dụng Executor với luồng ảo

    JAVA 25 SELF
    Cấp độ 57,Bài học 3
    Cùng tìm hiểu cách chạy mỗi nhiệm vụ trong một luồng ảo bằng Executors.newVirtualThreadPerTaskExecutor() (Java 21), khác gì so với các pool cổ điển ( newFixedThreadPool, newCachedThreadPool), cách kết thúc đúng bằng shutdown() và awaitTermination(...), lấy kết quả nhiệm vụ qua Future, và nơi luồng ảo mang lại lợi ích lớn nhất (I/O quy mô lớn, máy chủ web, kiểm thử tải). Cuối cùng — các lỗi thường gặp và lưu ý.
    Có sẵn
  • Scoped Values và các cơ chế luồng mới (Java 21+)

    JAVA 25 SELF
    Cấp độ 57,Bài học 4
    Giải thích vì sao ThreadLocal cổ điển dần lỗi thời trong thế giới luồng ảo, và cách ScopedValue xuất hiện để thay thế: ngữ cảnh được gắn với phạm vi thực thi chứ không phải với luồng. Ví dụ từng bước về truyền ngữ cảnh (người dùng, REQUEST_ID), scope lồng nhau và ghi đè, tích hợp với luồng ảo ( Executors. newVirtualThreadPerTaskExecutor()). Thảo luận so sánh ThreadLocal vs ScopedValue, mẹo thực tiễn, hạn chế và góc nhìn về Structured Concurrency (preview).
    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