CodeGym
促销
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 组合 CompletableFuture:thenCombine、allOf、anyOf

    JAVA 25 SELF
    等级 55,课时 2
    如何使用 CompletableFuture 并行执行任务并合并结果:通过 thenCombine/ thenCombineAsync 合并两个结果,通过 allOf 等待一组任务,通过 anyOf 响应最快的结果。我们会讲解方法签名、结合 supplyAsync 的实用示例、非阻塞处理( thenAccept、 thenRun),以及异常细节与其处理方式( exceptionally、 handle、 whenComplete)。最后——一张精炼的对比表。
    可用
  • 异步代码中的错误处理:exceptionally、handle

    JAVA 25 SELF
    等级 55,课时 3
    如何在 CompletableFuture 链中安全地捕获并处理异常:解析 exceptionally(出错时返回备用值)、 handle(成功/失败的通用处理器)和 whenComplete(只做副作用,不改结果)的角色。讨论为何直接调用 get()/ join() 会把根因包装为 ExecutionException/ CompletionException,如何组合各阶段( thenApply、 thenAccept),以及要避免的常见错误。
    可用
  • thenCompose + 自定义 Executor + 超时

    JAVA 25 SELF
    等级 55,课时 4
    如何用 thenCompose 在 CompletableFuture 中正确“拼接”异步步骤,以及何时只用 thenApply 就足够;为何以及如何通过 ExecutorService 接入自有线程池(而不是 ForkJoinPool.commonPool());如何用 orTimeout 和 completeOnTimeout 保护链路不至于“永远等待”。最后 — 实战示例:自定义 Executor、 thenCompose 与超时处理,以及常见错误与其解决方案。
    可用
  • 异步 IO:AsynchronousFileChannel(NIO2)

    JAVA 25 SELF
    等级 56,课时 0
    本讲解我们拆解 Java NIO.2 中的异步输入/输出(AIO):它与同步 IO 有何不同,如何使用 AsynchronousFileChannel,通过 Future 和 CompletionHandler 发起读/写操作,以及选择线程池 ExecutorService 的影响。实操部分将演示通过 open 打开通道、 read/ write 方法、交互流程以及常见错误。
    可用
  • Future、CompletionHandler:处理操作完成

    JAVA 25 SELF
    等级 56,课时 1
    如何在 Java 中处理 NIO2 异步操作的完成:通过 Future 的“承诺”和通过 CompletionHandler 的回调。我们将拆解 read/ write 在 AsynchronousFileChannel 上的签名、通过 get() 阻塞式获取结果与使用 isDone() 轮询,以及在 completed()/ failed() 中的非阻塞处理。还会展示读/写的实用示例,并对两种方式做简要对比。
    可用
  • 文本文件的异步处理

    JAVA 25 SELF
    等级 56,课时 2
    在 Java 中练习异步 I/O:通过 AsynchronousFileChannel 将大型文本文件按块读取到 ByteBuffer 中,使用 CharsetDecoder 将字节正确转换为字符,异步写回数据(通过 Future 或 CompletionHandler)。讨论多字节字符的“断裂”问题(例如 "UTF-8")、行数的即时统计、编码选择,以及在处理缓冲区和通道时的常见错误。
    可用
  • 异步 IO 中的错误处理与操作取消

    JAVA 25 SELF
    等级 56,课时 3
    如何在 Java 的异步输入/输出中正确捕获并处理错误:回调 CompletionHandler 的 completed/ failed 方法、日志记录与通知。解析通过 Future 和 cancel( boolean) 取消操作,对 get() 与 CancellationException 的影响,以及一些实践建议: try-with-resources、使用 CountDownLatch/ CompletableFuture 进行同步与资源释放。
    可用
  • 异步文件操作中的错误解析

    JAVA 25 SELF
    等级 56,课时 4
    面向 Java NIO 异步文件 I/O 的实战坑点解析:正确管理缓冲区 ByteBuffer( position/ limit 属性,调用 flip()、 clear()、 compact())、使用 AsynchronousFileChannel 并行操作时的竞态、资源关闭( channel.close()、 try-with-resources)、在 CompletionHandler 中的错误处理(方法 failed(...))、通过 Future<Integer> 管理操作生命周期并使用 CountDownLatch 进行同步、通过 CharsetDecoder 正确处理编码,以及选择合适的线程池 ExecutorService。
    可用
  • 平台线程与虚拟线程:区别与优势

    JAVA 25 SELF
    等级 57,课时 0
    我们来梳理平台线程与虚拟线程的差异:模型“ Platform Thread → OS”如何工作以及为何沉重;在 carrier threads 之上使用虚拟线程( Virtual Thread)会带来什么变化;以及如何在不写反应式“面条代码”的情况下实现可扩展性。我们会动手实践 Thread.ofVirtual(),比较 I/O‑bound 与 CPU‑bound 任务的行为,讨论兼容性(例如 InputStream.read、 Socket.accept 等阻塞调用)以及常见错误(老式同步、期待“魔法般加速”)。
    可用
  • 创建虚拟线程:Thread.ofVirtual().start()

    JAVA 25 SELF
    等级 57,课时 1
    Java 21 虚拟线程的实战:它们与平台线程有何不同,如何通过 Thread.startVirtualThread(...) 和 Thread.ofVirtual().start(...) 启动;何时依然适合使用 new Thread(...) 或 Thread.ofPlatform();以及如何借助 Executors.newVirtualThreadPerTaskExecutor() 批量执行任务。还将讲解如何通过 join() 等待完成、用 Future 和 ExecutionException 处理错误,以及使用虚拟线程(Virtual Threads)时的常见错误。
    可用
  • Virtual Threads 的可伸缩性与性能

    JAVA 25 SELF
    等级 57,课时 2
    对平台线程 Thread 与 Java 21 虚拟线程的实战对比:JVM 如何借助“ 载体线程”(carrier threads)以极小内存执行数十万任务;虚拟线程在哪些场景大放异彩(I/O-bound),又在哪些场景不适用(CPU-bound)。解析限制( synchronized、本机阻塞),最佳实践( Executors.newVirtualThreadPerTaskExecutor()),通过 JVisualVM 和 Java Flight Recorder 进行监控,以及迁移到 Virtual Threads 时的常见错误。
    可用
  • 使用带虚拟线程的 Executor

    JAVA 25 SELF
    等级 57,课时 3
    解析如何使用 Executors.newVirtualThreadPerTaskExecutor()(Java 21)在每个虚拟线程中运行一个任务,它与经典线程池( newFixedThreadPool、 newCachedThreadPool)有何不同,如何通过 shutdown() 和 awaitTermination(...) 正确结束,如何通过 Future 获取任务结果,以及虚拟线程在哪些场景中收益最大(大量 I/O、Web 服务器、压力测试)。最后——常见错误与细节。
    可用
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
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
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym