//wait() ; / /使用了wait就等待了。立即釋放鎖。將來醒過來的時候,是從這裡醒過來的時候
// b.notify(); 喚醒執行緒的方法
主方法:
package cn.zsp.thread_03;
//wait() ; / /使用了wait就等待了。立即釋放鎖。將來醒過來的時候,是從這裡醒過來的時候
public
class
baozidemo
}
包子引數的類,這裡沒有封裝是為了方便:
package cn.zsp.thread_03;
public
class
baozitype
一號包子的消費情況:
package cn.zsp.thread_03;
public
class
consumebaozi1
implements
runnable
public
consumebaozi1
(baozitype b)
@override
public
void
run(
)catch
(interruptedexception e)
synchronized
(b)catch
(interruptedexception e)
} system.out.
println
("肉包子賣出去了乙個");
b.number1--
; b.
notify()
;}}}
}
package cn.zsp.thread_03;
public
class
consumebaozi2
implements
runnable
public
consumebaozi2
(baozitype b)
消費二號包子:
public
void
run(
)catch
(interruptedexception e)
synchronized
(b)catch
(interruptedexception e)
} system.out.
println
("菜包賣出去了乙個");
b.number2--
; b.
notify()
;}}}
}
消費三號包子:
package cn.zsp.thread_03;
public
class
producebaozi
implements
runnable
public
producebaozi
(baozitype b)
@override
public
void
run(
)catch
(interruptedexception e)
synchronized
(b)catch
(interruptedexception e)
} system.out.
println
("現在肉包子有"
+b.number1+
"個 菜包子有"
+b.number2+
"個")
; b.number1 +=1;
b.number2 +=1;
b.notify()
;}}}
}
執行緒等待喚醒機制
等待喚醒機制 乙個執行緒在工作時發現某些條件不滿足了,這時可以釋放掉鎖,並暫停工作。目的是讓另乙個執行緒插入進來,進行條件的補給 後進入的執行緒在補足條件後,可以進行 喚醒 將之前所有等待的執行緒喚醒,讓他們繼續工作,然後自己退出。喚醒之後執行的 system.out.println 包子已經做好了...
執行緒的等待喚醒機制
執行緒間通訊 多個執行緒併發執行時,在預設情況下cpu是隨機切換執行緒的,當我們需要多個執行緒來共同完成一件任務,並且我們希望他們有規律的執行,那麼多執行緒之間需要一些協調通訊,以此來幫我們達到多執行緒共同操作乙份資料。如何保證執行緒間通訊有效利用資源 多個執行緒在處理同乙個資源,並且任務不同時,需...
java 多執行緒 等待喚醒機制
package thread執行緒 生產者消費者問題 問題1 為什麼要用while而不用if進行判斷 因為是多執行緒在操作同一資源,即有多個生產者也有多個消費者,如果用if進行判斷的話會出現生產者生產連續生產多次,而消費者只消費 消費一次,或生產者生產一次消費者消費多次的錯誤資訊,這是為什麼呢?原因...