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ề CompletableFuture

    JAVA 25 SELF
    Cấp độ 55,Bài học 0
    Trong bài giảng này, chúng ta sẽ phân tích vì sao mã đồng bộ dẫn tới việc bị chặn, những hạn chế của Future (như get() dạng blocking), và cách lớp CompletableFuture trong gói java.util.concurrent thay đổi phong cách làm việc với tính bất đồng bộ. Chúng ta sẽ luyện tập chạy tác vụ nền bằng supplyAsync, đăng ký nhận kết quả bằng thenAccept/ thenApply, bàn về vai trò của pool ForkJoinPool và các lỗi thường gặp: dùng get()/ join() trên luồng chính, thiếu xử lý lỗi qua exceptionally/ handle, v.v.
    Có sẵn
  • Tác vụ bất đồng bộ: thenApply, thenAccept, thenRun

    JAVA 25 SELF
    Cấp độ 55,Bài học 1
    Phân tích cách khởi chạy và kết hợp các tính toán bất đồng bộ với CompletableFuture: cách khởi động tác vụ qua supplyAsync và runAsync, sự khác nhau giữa các trình xử lý thenApply, thenAccept, thenRun, và khi nào nên chọn các phiên bản bất đồng bộ thenApplyAsync/ thenAcceptAsync/ thenRunAsync. Sẽ bàn về luồng thực thi ( ForkJoinPool hoặc Executor của bạn), kiểu kết quả ( CompletableFuture<T>, CompletableFuture<Void>) và các lỗi thường gặp: gọi chặn get()/ join(), lỗi không được xử lý nếu thiếu exceptionally/ handle/ whenComplete, cũng như việc cố gắng dùng kết quả bên trong thenRun.
    Có sẵn
  • Kết hợp CompletableFuture: thenCombine, allOf, anyOf

    JAVA 25 SELF
    Cấp độ 55,Bài học 2
    Cách chạy song song các tác vụ và hợp nhất kết quả bằng CompletableFuture: hợp nhất hai kết quả qua thenCombine/ thenCombineAsync, chờ một tập tác vụ bằng allOf, phản hồi theo kết quả nhanh nhất bằng anyOf. Chúng ta sẽ xem xét chữ ký (signature), các ví dụ thực tiễn với supplyAsync, xử lý không chặn ( thenAccept, thenRun), cũng như các điểm tinh tế về lỗi và cách xử lý chúng ( exceptionally, handle, whenComplete). Cuối cùng — bảng so sánh gọn nhẹ các phương thức.
    Có sẵn
  • Xử lý lỗi trong mã bất đồng bộ: exceptionally, handle

    JAVA 25 SELF
    Cấp độ 55,Bài học 3
    Cách bắt và xử lý ngoại lệ một cách an toàn trong các chuỗi CompletableFuture: phân tích vai trò của exceptionally (trả về giá trị dự phòng khi có lỗi), handle (bộ xử lý tổng quát cho cả thành công/lỗi) và whenComplete (hành động phụ mà không thay đổi kết quả). Thảo luận vì sao việc gọi trực tiếp get()/ join() lại bọc nguyên nhân vào ExecutionException/ CompletionException, cách kết hợp các bước ( thenApply, thenAccept) và những lỗi thường gặp cần tránh.
    Có sẵn
  • thenCompose + Executor tùy chỉnh + timeout

    JAVA 25 SELF
    Cấp độ 55,Bài học 4
    Cách “ghép” đúng các bước bất đồng bộ trong CompletableFuture bằng thenCompose và khi nào chỉ cần thenApply; cách và lý do kết nối pool luồng riêng qua ExecutorService (thay cho ForkJoinPool.commonPool()); cách bảo vệ chuỗi khỏi “chờ mãi mãi” bằng orTimeout và completeOnTimeout. Cuối cùng — ví dụ thực hành với Executor tùy chỉnh, thenCompose và timeout, cùng các lỗi thường gặp và cách xử lý.
    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