心理

當前位置 /首頁/完美生活/心理/列表

condition原理

condition原理

Condition持有多個FIFO的等待隊列,當前線程調用await方法時,那麼這當前線程就會釋放鎖,進入這個等待隊列的尾部進入等待狀態。

Condition擁有這個隊列的首節點(firstWaiter)和尾節點(lastWaiter).其實一個Lock(同步器)有一個同步隊列(準備去獲得鎖)以及多個等待隊列(本來已經有鎖,但是中途用了await方法),還記得之前討論的監視器麼,和這個很像,監視器只有一個同步隊列和一個等待隊列。

其實工作原理一樣的,沒有獲取鎖的線程在同步隊列等待鎖,獲得鎖後進入特殊的房間(資源),調用await之類的等待方法就把同步隊列的頭結點移到等待隊列的尾節點。當等待隊列裏面的節點被喚醒後,進入同步隊列拿鎖進入同步狀態。

TAG標籤:condition #