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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 死锁(Deadlock):原因、示例与排除

    JAVA 25 SELF
    等级 53,课时 0
    本讲解读什么是 Java 中的线程互相阻塞(deadlock,死锁),它为何发生,以及构成它的四个必要条件。通过一个使用 synchronized 的实操示例演示如何复现问题,然后学习预防策略:统一的资源获取顺序、使用带超时的 ReentrantLock.tryLock、缩短临界区,及避免不必要的嵌套锁。还将展示如何通过 Thread Dump 和 jstack 进行诊断、识别 BLOCKED/ WAITING 状态,最后以检查清单和常见错误收尾。
    可用
  • Livelock 与 Starvation:定义与示例

    JAVA 25 SELF
    等级 53,课时 1
    拆解并发异常 Livelock 和 Starvation:它们与 Deadlock 的区别、在代码与日志中的表现。展示 Java 示例:“礼貌的工人”(活锁)以及因优先级和不公平锁导致的饥饿。学习如何发现问题(日志、 Thread dump、 VisualVM、 Java Mission Control)并加以预防:在重试前添加随机延迟( Thread.sleep)、使用非阻塞算法、通过带公平性标志的 ReentrantLock( new ReentrantLock(true))实现公平锁、谨慎划定临界区并避免滥用 setPriority() 与 synchronized。
    可用
  • 线程安全的集合:ConcurrentHashMap 等

    JAVA 25 SELF
    等级 53,课时 2
    在本讲中,我们将解释为什么普通集合( ArrayList、 HashMap)在多线程环境中是危险的,以及包 java.util.concurrent 提供了哪些线程安全的替代方案: ConcurrentHashMap、 CopyOnWriteArrayList、 ConcurrentLinkedQueue、基于跳表(skip-list)的结构和 BlockingQueue。我们将讨论诸如 merge、 putIfAbsent、 computeIfAbsent 之类的原子操作,与 Collections.synchronizedMap 做比较,并给出实践示例与常见错误(弱一致性迭代器、非原子性的操作序列等)。
    可用
  • AtomicInteger、AtomicReference:原子操作

    JAVA 25 SELF
    等级 53,课时 3
    为什么自增 i ++ 在多线程中不起作用,什么是原子操作,以及包 java.util.concurrent.atomic 如何提供这些操作。我们将讲解 AtomicInteger 和 AtomicReference,方法 incrementAndGet()、 compareAndSet(...),内部机制 CAS(Compare-And-Swap),以及何时更适合选择 synchronized、何时选择 LongAdder。最后——典型错误:复合操作、ABA 问题以及嵌套对象的线程安全。
    可用
  • 多线程程序的诊断与调试

    JAVA 25 SELF
    等级 53,课时 4
    如何使用 Thread Dump 搭配 jstack、VisualVM 和 IDE 进行采集与阅读,识别线程状态( RUNNABLE、 BLOCKED、 WAITING)并定位相互阻塞。我们将讲解在 Java Mission Control 与 Java Flight Recorder 中的线程监控、日志实践(线程名、进入/退出 synchronized)、最小化锁、使用 CountDownLatch 的并发测试,以及一个真实的死锁案例分析。最后——常见错误及其规避方法。
    可用
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