多個執行緒在操作同乙個資源,但是操作的動作不同。
比如我們之前看的賣票,多個執行緒操作動作相同,都是賣票,就不屬於執行緒通訊
比如乙個執行緒存錢,乙個執行緒取錢,就屬於執行緒通訊。
怎麼辦呢?
解決的方法就是加同步,同步需要滿足兩個前提:
第一:必須有兩個或者兩個以上的執行緒
第二:多個執行緒必須使用同一把鎖
可以看到程式是正常的,但是大塊的古天樂,大塊的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進行判斷的話會出現生產者生產連續生產多次,而消費者只消費 消費一次,或生產者生產一次消費者消費多次的錯誤資訊,這是為什麼呢?原因...