Udemy Course Multithreading, Concurrency & Performance 24
過程將使用到javafx套件,課程資源分享成品Maven專案有使用以下Depency
以下我add jar方式,自己邊理解邊刻
成品將會有一個Dashboard,顯示幾個類似投資界面的虛擬貨幣種類及價值
並且會有兩個Thread影響這個Dashboard顯示的內容;
- 純粹UI Thread,將目前的虛擬幣價值即時更新顯示
- 另一個Thread在更新虛擬幣價值
首先先刻出存放虛擬幣價值的物件及ReentrantLock-->PriceContainer
接著再做一個Thread class來執行更新虛擬幣價值-->PriceUpdater
接著引用javafx套件
其中前面所說的UI Thread就由該套件於啟動的launch提供(就在main裡面)
launch會啟動其中的Override的start(Stage primaryStage) Method
執行後會看到:
UI Thread會一直更新現在讀到得價值
但是每一秒就會被鎖住並更新價值(此時UI Thread拿不到價值)
完整Code如下
以上簡單示範兩個Thread,哪一個該強制鎖來更新價值
另一個UI Thread只是單純顯示,則要善用tryLock()
最重要的是要寫finally將鎖釋放!!
其中過程講師有示範如果UI顯示Thread那邊不用tryLock,也是搞強制鎖
則價值更新就沒那麼頻繁,且背景顏色變換沒那麼快,可以有空試玩如下