AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題
課程
評論
關於我們
開始
開始學習
立即開始學習
My Progress
Courses
任務地圖
課程
Java 25
Java 25
等級 52
共享資源與同步:存取問題
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
取代的情境。範例、建議與淺顯易懂的類比——讓你的程式不會卡死不動。
Please enable JavaScript to continue using this application.