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

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • 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() 兩兩交換資料。實作上,我們會做群體起跑的工作者以及「遊戲 tick」,並拆解常見錯誤: CountDownLatch 的一次性、如何處理 BrokenBarrierException,以及正確的 deregister()。全程免去 wait()/ notify() 的痛苦。
    可用
  • StampedLock 與低爭用計數器

    JAVA 25 SELF
    等級 58,課程 3
    當 ReentrantReadWriteLock 與傳統的 ReadWriteLock 在高負載下開始吃力時,帶有樂觀讀取的 StampedLock 就能派上用場: tryOptimisticRead + validate 的組合在寫入稀少時幾乎能提供「免費」的讀取。我們將拆解鎖的模式、印章(stamps)的用法、對 reentrancy 的限制,並與 ReentrantReadWriteLock 比較;也會看看低爭用的計數器 — LongAdder 與 LongAccumulator — 以及為什麼在競爭下它們能勝過 AtomicLong。最後以實作收尾:讀多寫少的快取與迷你效能測試。
    可用
  • Java 記憶體模型(JMM)

    JAVA 25 SELF
    等級 58,課程 4
    拆解 Java 記憶體模型中的可見性與指令排序規則:happens-before 關係代表什麼,何時以及如何使用 volatile、 synchronized、final 欄位( 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、Parallel Streams

    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(...),選擇區塊大小的準則、平行計算字數的範例,以及常見錯誤(區塊邊界、資源管理、執行緒數量)。
    可用
  • 檔案處理管線:Producer–Consumer

    JAVA 25 SELF
    等級 59,課程 4
    講解如何依照 Producer–Consumer 模式,透過 BlockingQueue(例如 ArrayBlockingQueue)在執行緒之間安全地交換資料,瞭解阻塞操作 put() 與 take() 的工作方式、為什麼需要 backpressure 機制,以及如何使用「poison pill」(例如 "__END__",而不是 null)正確地結束執行緒。透過 ExecutorService 啟動消費者,加入管線視覺化,並解析常見錯誤。
    可用
  • 模組導論:為什麼需要

    JAVA 25 SELF
    等級 60,課程 0
    來談談為什麼 Java 9 引入模組化系統 JPMS:為什麼「 classpath 派對」不好,模組如何在容器層級建立可見性邊界,什麼是 module-info.java,以及如何使用指令 module、 exports、 requires、 opens、 uses/ provides。我們也會討論優勢(封裝、顯式相依、安全性、 jlink)、適用場景(包含 java.base、 java.sql)、實用細節,以及遷移時的常見錯誤(遺漏 exports、漏加 requires、模組名稱重複)。
    可用
  • 1
  • ...
  • 25
  • 26
  • 27
  • 28
  • 29
  • 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