併發 十一 為什麼wait 一定要放在迴圈中

2021-08-04 13:40:30 字數 461 閱讀 8402

在多執行緒的程式設計實踐中,wait()的使用方法如下:

synchronized (monitor) 

// 處理其他的業務邏輯

}

那為什麼非要while判斷,而不採用if判斷呢?如下:

synchronized (monitor) 

// 處理其他的業務邏輯

}

這是因為,如果採用if判斷,當執行緒從wait中喚醒時,那麼將直接執行處理其他業務邏輯的**,但這時候可能出現另外一種可能,條件謂詞已經不滿足處理業務邏輯的條件了,從而出現錯誤的結果,於是有必要進行再一次判斷,如下:

synchronized (monitor)  else 

}}

而迴圈則是對上述寫法的簡化,喚醒後再次進入while條件判斷,避免條件謂詞發生改變而繼續處理業務邏輯的錯誤。

併發 十一 為什麼wait 一定要放在迴圈中

在多執行緒的程式設計實踐中,wait 的使用方法如下 synchronized monitor 處理其他的業務邏輯 那為什麼非要while判斷,而不採用if判斷呢?如下 synchronized monitor 處理其他的業務邏輯 這是因為,如果採用if判斷,當執行緒從wait中喚醒時,那麼將直接執...

為什麼wait 一定要放在迴圈中

在多執行緒的程式設計實踐中,wait 的使用方法如下 synchronized monitor 處理其他的業務邏輯 那為什麼非要while判斷,而不採用if判斷呢?如下 synchronized monitor 處理其他的業務邏輯 這是因為,如果採用if判斷,當執行緒從wait中喚醒時,那麼將直接執...

Docker 為什麼一定要sudo

這個sudo真是煩死人了,每次都要sudosudo,覺得浪費了我大量的時間。但是,當我學習到如何到如何可以不sudo 為什麼要sudo之後,還是覺得sudo好一些吧,於是最後選擇加乙個環境變數,來節約時間。參考文章中給出了幾個非常高水平的處理辦法,我很喜歡,以後來學。1.如何免sudo實現docke...