Udemy Course Multithreading, Concurrency & Performance 20

Locking Strategies

ZONGRU Li
Sep 2, 2021

在Multi-Thread情境下,要鎖住邏輯大略有兩種方式

考量到以下的邏輯運算

可以選擇兩種鎖的策略,亦即將鎖鎖在:

左邊是Fine-Grained Locking,右邊是Coarse-Grained Locking策略

Coarse-Grained Locking範例:

考量以下邏輯

上面宣告兩個物件,並且是由不同Method在運算,兩個Method毫不相干

但是在這兩個Method加入Synchronized修飾字卻會造成以下結果

Coarse-Grained Locking導致不相干的另一個Method也要排隊

上述Coarse-Grained Locking策略其實沒有邏輯運算上的問題

只是就有些浪費運算的resource,並且沒有多工,邏輯運算時間拉更長

接著另一種就是Fine-Grained Locking範例如下

Fine-Grained Locking,讓不同Thread在不同Method有更多併行處理的過程

上述Fine-Grained Locking效率更佳

因為不同Thread在不同Method內互鎖對方僅在更小的範圍

大多時候不同Thread在兩個Method中邏輯處理是併行的

只有那更小範圍的部分要排隊

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet