多線程 狀態 鎖 的理解

1、線程狀態有:a、創建狀態;b、就緒狀態;c、運行狀態;d、等待狀態;e、阻塞狀態;f、結束狀態

其中等待狀態和阻塞狀態理解:當前線程調用了wait()、sleep()、join()等方法的時候會進入到等待狀態。進入等待狀態的線程沒有機會獲取cpu的使用權,只有執行了喚醒操作或者定時時間(執行了wait(時間)、sleep(時間)進入等待狀態的)到了,等待狀態的線程就會進入就緒狀態,纔有機會獲取cpu的使用權。

阻塞狀態:因爲多個線程共同獲取同一個資源,爲了避免線程不安全使用了鎖機制,比如使用synchronize或者lock。鎖機制可以保證一個資源只能同時被一個線程使用。

等待狀態的線程沒有機會獲得cpu使用權,阻塞狀態的線程是有機會獲得cpu使用權,但是多個線程只能同時有一個線程獲得鎖資源。鎖機制可以資源的線程安全性,等待喚醒機制(等待狀態--就緒狀態切換)可以避免cpu的不必要的浪費(比如配合鎖機制和條件,只有滿足某些條件的線程纔能有機會獲取cpu使用權,這樣避免了所有不滿足條件的線程和滿足條件的線程都去競爭鎖資源和cpu使用權力,浪費cpu的使用權)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章