多執行緒06 執行緒通訊(等待喚醒機制)

2021-10-01 07:59:44 字數 2924 閱讀 1554

多個執行緒在操作同乙個資源,但是操作的動作不同。

比如我們之前看的賣票,多個執行緒操作動作相同,都是賣票,就不屬於執行緒通訊

比如乙個執行緒存錢,乙個執行緒取錢,就屬於執行緒通訊。

怎麼辦呢?

解決的方法就是加同步,同步需要滿足兩個前提:

第一:必須有兩個或者兩個以上的執行緒

第二:多個執行緒必須使用同一把鎖

可以看到程式是正常的,但是大塊的古天樂,大塊的anglebaby,那麼如何變成存乙個取乙個,而不是存一大塊取一大塊呢?

由於成員變數一般都是私有的,所以對程式就行優化。

144 多執行緒 執行緒間通訊 等待喚醒機制

class res class input implements runnable public void run catch exception e if x 0 else x x 1 2 r.flag true r.notify class output implements runnable ...

java多執行緒通訊之等待喚醒機制

多執行緒間通訊,其實就是多個執行緒操操作同乙個資源,但是操作方式不同。典型例項有生產者和消費者,本文也通過例項來分析執行緒等待喚醒機制。public final void notify 喚醒在此物件監視器上等待的單個執行緒,如果所有執行緒都在此物件上等待,則會任意選擇喚醒其中乙個執行緒。public...

java 多執行緒 等待喚醒機制

package thread執行緒 生產者消費者問題 問題1 為什麼要用while而不用if進行判斷 因為是多執行緒在操作同一資源,即有多個生產者也有多個消費者,如果用if進行判斷的話會出現生產者生產連續生產多次,而消費者只消費 消費一次,或生產者生產一次消費者消費多次的錯誤資訊,這是為什麼呢?原因...