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

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • Observer 模式(觀察者)

    JAVA 25 SELF
    等級 50,課程 3
    行為型設計模式「觀察者」:角色 Subject 與 Observer,透過 addObserver/ removeObserver 訂閱/取消訂閱,並以 notifyObservers 方法發送通知。拆解它與 Java 事件模型的關係: button. addActionListener( listener) ; → 觸發 actionPerformed()。透過實例練習(溫度計與空調、迷你計數器與 Lambda),以及說明為何 java.util.Observable/ Observer 已過時與現代做法是什麼。
    可用
  • EDT 執行緒與 UI 中的長時間作業

    JAVA 25 SELF
    等級 50,課程 4
    在本講座中,我們將說明什麼是 UI 事件處理執行緒 — EDT(於 Swing),以及它在 JavaFX Application Thread 中的對應;為什麼介面元件不是執行緒安全的,以及為何在執行繁重任務時視窗會「卡住」。我們會示範正確做法:透過 new Thread(...) 將計算移到背景、使用 SwingUtilities.invokeLater 與 Platform.runLater 來更新介面,還有運用高階工具 SwingWorker<T, V> 與 Task<V>/ Service<V> 來處理進度、取消與錯誤。
    可用
  • 多執行緒入門:為什麼需要

    JAVA 25 SELF
    等級 51,課程 0
    為什麼程式需要執行緒與平行化:從維持介面回應到用滿所有處理器核心。解析行程(process)與執行緒(thread)的差別、 JVM 中主執行緒 main 的角色、實務案例(UI、伺服器、檔案處理)與風險: race condition、 deadlock,以及像 synchronized 這樣的基礎同步工具。並示範一個使用 Thread 讓兩個任務並行執行的簡單範例。
    可用
  • 啟動執行緒:Thread 與 Runnable,語法

    JAVA 25 SELF
    等級 51,課程 1
    在本講座中我們解析 Java 中啟動執行緒:認識類別 Thread 與介面 Runnable,學會正確呼叫 start() 並不要把它和 run() 混淆,使用匿名類別與 Lambda 運算式,啟動多個執行緒並查看生命週期( NEW → RUNNABLE → TERMINATED)。我們也會談到方法 Thread.currentThread()、 getName()、透過 join() 等待,以及像 IllegalThreadStateException 這樣的常見錯誤。
    可用
  • 執行緒的狀態與生命週期

    JAVA 25 SELF
    等級 51,課程 2
    我們將解析 Java 中執行緒的生命週期:從 Thread.State(
    NEW
    、
    RUNNABLE
    、
    BLOCKED
    、
    WAITING
    、
    TIMED_WAITING
    、
    TERMINATED
    )到它們之間的轉換。學習透過 Thread.sleep(...)、 join()、 interrupt() 管理執行緒,使用 isAlive() 與 getState() 診斷狀態,並避免使用已棄用的方法如 stop()/ suspend()/ resume()。最後提供實用建議與常見錯誤。
    可用
  • 執行緒的參數與優先順序

    JAVA 25 SELF
    等級 51,課程 3
    如何透過實作 Runnable 的類別建構子安全地將參數傳遞給執行緒、何時適合使用 lambda 運算式,以及為什麼欄位最好宣告為 final。解析執行緒優先順序: setPriority/ getPriority 方法、 Thread.MIN_PRIORITY、 Thread.NORM_PRIORITY、 Thread.MAX_PRIORITY 常數及其對排程器的影響。另附 — 透過建構子為執行緒命名、 setName/ getName,實作範例與常見錯誤(共用 Runnable、setter、對優先順序抱持期待)。
    可用
  • 競態條件(race condition)

    JAVA 25 SELF
    等級 51,課程 4
    在本講座中,我們說明什麼是競態條件:當多個執行緒同時存取共享資料,而結果取決於排程順序。以遞增 counter ++ 的例子展示為何該操作並非原子,以及增量如何遺失。解析一個銀行帳戶的實務案例、生產環境中的後果與防護作法: synchronized、 java.util.concurrent.atomic 中的原子型別(例如 AtomicInteger),以及不可變性。最後以「常見錯誤」作結,解釋為何 Thread 的 bug 很少被測試捕捉,以及為何用 Thread. sleep( 1)「治療」它們毫無意義。
    可用
  • 共享資源與同步:存取問題

    JAVA 25 SELF
    等級 52,課程 0
    這堂課將介紹在多執行緒應用程式中什麼是共享資源、為何會出現競態條件 (race condition) 與「遺失更新」,以及如何使用 synchronized 來保護資料。我們會拆解同步的基本手法(方法與區塊),談談 java.util.concurrent 裡的現代工具( Lock、 ReentrantLock、 Semaphore 等),看看以遞增計數器為例的實務情境與常見錯誤( i ++ 非原子、鎖錯物件、關於 volatile 的迷思)。
    可用
  • synchronized, volatile:語法與應用

    JAVA 25 SELF
    等級 52,課程 1
    多執行緒的實作型講座:說明關鍵字 synchronized 的運作方式(區塊與方法、物件監視器,以及在類別層級以 ClassName.class 鎖定),釐清透過 volatile 所保證的可見性與操作的原子性之差異,為什麼將 boolean 旗標設為 volatile 很方便,而遞增 count ++ 則需要同步。我們也會比較何時選擇 synchronized、何時使用 volatile,並解析常見錯誤。
    可用
  • ReentrantLock 與 ReadWriteLock: 差異、範例

    JAVA 25 SELF
    等級 52,課程 2
    透過經典的 synchronized 同步機制,與套件 java.util.concurrent.locks 中更彈性的原語: ReentrantLock 與 ReadWriteLock,進行實務比較。說明如何顯式管理鎖( lock()/ unlock()、具逾時的 tryLock()),如何用 ReentrantReadWriteLock 擴展讀取並行度,什麼是「公平性」( fair mode),各工具的適用場景,以及最常見的錯誤。
    可用
  • 互斥鎖與信號量:語法與應用

    JAVA 25 SELF
    等級 52,課程 3
    在本講座中,我們會解析 Java 中的關鍵同步原語:如何使用 synchronized 與類別 ReentrantLock(方法 lock()/ unlock()、 try- finally 結構)保護臨界區,以及如何透過 Semaphore(方法 acquire()/ release())限制並行度。接著以表格比較互斥鎖與信號量,並討論實務案例(銀行、連線數受限的伺服器)與常見錯誤,這些錯誤可能導致 deadlock 與效能損失.
    可用
  • 同步化常見錯誤解析

    JAVA 25 SELF
    等級 52,課程 4
    針對 Java 多執行緒的常見錯誤進行實作向解析:在 ReentrantLock 與 Semaphore 上遺漏呼叫 unlock()/ release()(以 try- finally 解決)、為 synchronized 選錯監視器、互相鎖死(deadlock)與鎖取得順序、過度同步化,以及 volatile 的適用邊界與以 AtomicInteger 取代的情境。範例、建議與淺顯易懂的類比——讓你的程式不會卡死不動。
    可用
  • 1
  • ...
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...
  • 30
學習
  • 註冊
  • 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