CodeGym
AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • 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)、採用非阻塞演算法、透過帶有 fairness 旗標的 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 進行併發測試,以及解析真實的 deadlock 案例。最後 — 常見錯誤與避免方法。
    可用
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • 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