Udemy Course Multithreading, Concurrency & Performance 24

進階locking-ReentrantLock實作User Interface範例財金儀表板

ZONGRU Li
Sep 14, 2021

過程將使用到javafx套件,課程資源分享成品Maven專案有使用以下Depency

以下我add jar方式,自己邊理解邊刻

成品將會有一個Dashboard,顯示幾個類似投資界面的虛擬貨幣種類及價值

並且會有兩個Thread影響這個Dashboard顯示的內容;

  1. 純粹UI Thread,將目前的虛擬幣價值即時更新顯示
  2. 另一個Thread在更新虛擬幣價值

首先先刻出存放虛擬幣價值的物件及ReentrantLock-->PriceContainer

接著再做一個Thread class來執行更新虛擬幣價值-->PriceUpdater

接著引用javafx套件

其中前面所說的UI Thread就由該套件於啟動的launch提供(就在main裡面)

launch會啟動其中的Override的start(Stage primaryStage) Method

簡單講解,細項需要到下方Method內觀看

執行後會看到:

UI Thread會一直更新現在讀到得價值

但是每一秒就會被鎖住並更新價值(此時UI Thread拿不到價值)

完整Code如下

以上簡單示範兩個Thread,哪一個該強制鎖來更新價值

另一個UI Thread只是單純顯示,則要善用tryLock()

最重要的是要寫finally將鎖釋放!!

其中過程講師有示範如果UI顯示Thread那邊不用tryLock,也是搞強制鎖

則價值更新就沒那麼頻繁,且背景顏色變換沒那麼快,可以有空試玩如下

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet