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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Scoped Values 与新的线程机制(Java 21+)

    JAVA 25 SELF
    等级 57,课时 4
    讲解为什么经典的 ThreadLocal 在虚拟线程时代逐渐失去优势,以及如何用 ScopedValue 来替代它:将上下文绑定到执行作用域,而不是绑定到线程。包含逐步示例来传递上下文(用户、 REQUEST_ID)、嵌套的 scope 及其遮蔽、与虚拟线程集成( Executors. newVirtualThreadPerTaskExecutor())。讨论 ThreadLocal 与 ScopedValue 的对比、实践建议、限制以及对 Structured Concurrency(预览)的展望。
    可用
  • Structured Concurrency

    JAVA 25 SELF
    等级 58,课时 0
    Structured Concurrency 将杂乱无章的线程集合变成可管理的任务层级:你在 StructuredTaskScope 内以虚拟线程启动子任务,通过 join() 等待它们,使用 throwIfFailed() 统一处理错误,并通过 resultNow()/ result() 获取结果。我们将讲解 ShutdownOnFailure 与 ShutdownOnSuccess 的终止策略,对比 CompletableFuture,看看 HTTP 聚合器的示例以及使用结构化并发的常见错误。
    可用
  • 贯穿调用栈的任务取消与超时

    JAVA 25 SELF
    等级 58,课时 1
    如何在 Java 中正确取消耗时和阻塞操作:通过 Thread.interrupt() 的协作式中断,通过 Future.cancel() 的任务取消及 CancellationException 的行为, CompletableFuture 中的超时与取消( orTimeout、 completeOnTimeout),使用 StructuredTaskScope 的结构化并发,共享截止时间(time‑budget)以及将超时沿调用栈向下传递(包括 Instant/ Duration 和 Scoped Values)。解析与阻塞 IO 的实践及常见错误。
    可用
  • 高级同步器

    JAVA 25 SELF
    等级 58,课时 2
    本课讲解来自 java.util.concurrent 的高级同步器: CountDownLatch、 CyclicBarrier、 Phaser 和 Exchanger。学习如何通过 await()/ countDown() 协调任务的启动与结束,使用 await() 构建可重复的阶段与屏障动作,使用 register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() 管理“乐团”的动态成员,并通过 exchange() 成对交换数据。实战中我们会实现大量 worker 的同时起跑和“游戏 tick”,并拆解常见错误: CountDownLatch 的一次性特性、处理 BrokenBarrierException 以及正确的 deregister()。全程避免使用 wait()/ notify() 带来的痛苦。
    可用
  • StampedLock 与低争用计数器

    JAVA 25 SELF
    等级 58,课时 3
    当 ReentrantReadWriteLock 和经典的 ReadWriteLock 在高负载下开始“打滑”时, StampedLock 的乐观读就能派上用场: tryOptimisticRead + validate 的组合在写入稀少时能带来几乎“免费”的读取。我们将讲解锁的工作模式、戳记的使用、对可重入的限制,对比 ReentrantReadWriteLock,还会看看低争用计数器—— LongAdder 与 LongAccumulator——以及它们为何在竞争下跑赢 AtomicLong。最后以实践收尾:读取占优的缓存与一个迷你基准测试。
    可用
  • Java Memory Model (JMM)

    JAVA 25 SELF
    等级 58,课时 4
    解析 Java Memory Model 中的可见性与操作排序规则: happens-before 关系意味着什么, volatile、 synchronized、最终字段( final)何时以及如何发挥作用,以及为什么没有它们会出现“陈旧”数据。我们将展示对象的安全发布、正确的 double-checked locking、通过 VarHandle 的低层访问、伪共享的影响与注解 @Contended,以及关于 Thread.start()/ Thread.join()、 Future.get() 和微基准 JMH 的实用注意事项。
    可用
  • 文件的多线程读写

    JAVA 25 SELF
    等级 59,课时 0
    在 Java 中进行并行文件操作的实用指南:何时多线程确实能加速 I/O、何时不会;工具的选择—— Thread、通过 ExecutorService 的线程池、使用 CompletableFuture 的异步与并行流——以及通过 FileChannel 按块读取大文件、向共享日志安全写入,以及操作系统/文件系统的限制。我们讲解任务启动模式、线程池配置、 shutdown()/ awaitTermination() 方法和常见错误。
    可用
  • 文件的并行处理:ForkJoin、并行流

    JAVA 25 SELF
    等级 59,课时 1
    在 Java 中并行化文件任务的实用指南:如何通过 Stream API 的 parallel()/ parallelStream() 开启并行, ForkJoinPool 的工作原理与配置方式,以及何时更适合使用 RecursiveTask。我们将讨论并行在哪些场景下确实能加速 I/O,如何管理公共线程池,以及如何安全地关闭资源( try-with-resources)。最后——通过 FileChannel 进行定位访问,快速了解如何读取/写入大文件的部分。
    可用
  • 文件系统的并行遍历:Files.walk + parallel() 与 ForkJoin

    JAVA 25 SELF
    等级 59,课时 2
    如何加速遍历大型目录并处理成千上万的文件:使用 Files.walk() 和通过 parallel() 的并行流,理解 ForkJoinPool.commonPool() 的作用并配置并行度。讲解何时改用 ExecutorService, CPU-bound 与 IO-bound 任务的差异,编写在所有 ".java" 文件中统计行数的示例,并总结最佳实践。
    可用
  • 将大文件拆分为块

    JAVA 25 SELF
    等级 59,课时 3
    如何加速处理以 GB 计的大文件:把它们切成块(chunking),通过 FileChannel进行按位置访问,并使用内存映射缓冲区 MappedByteBuffer,再配合 ExecutorService并行计算。我们将讲解定位 I/O 的关键方法: position(...)、 read(...)、 write(...),如何选择合适的 chunk 大小,并行词数统计示例,以及常见陷阱(chunk 边界、资源管理、线程数量)。
    可用
  • 文件处理流水线:生产者–消费者

    JAVA 25 SELF
    等级 59,课时 4
    讲解如何按 BlockingQueue(例如 ArrayBlockingQueue)实现的 Producer–Consumer 模式来构建文件处理流水线,理解阻塞操作 put() 和 take() 的工作方式,为何需要 backpressure 机制,以及如何用“毒丸”(例如 "__END__",而不是 null)正确结束线程。通过 ExecutorService 启动消费者,添加流水线可视化并解析常见错误。
    可用
  • 模块入门:为什么需要

    JAVA 25 SELF
    等级 60,课时 0
    我们来解析 Java 9 为什么引入模块化系统 JPMS:所谓的“ classpath-party”有什么问题,模块如何在容器层面引入可见性边界,什么是 module-info.java,以及如何使用 module、 exports、 requires、 opens、 uses/ provides 指令。我们将讨论优势(封装、显式依赖、安全性、 jlink)、应用场景(包括 java.base、 java.sql)、一些有用的细节,以及迁移时的典型错误(忘记 exports、漏掉 requires、模块名重复)。
    可用
  • 1
  • ...
  • 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