激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java notify和notifyAll的對比

java notify和notifyAll的對比

2020-08-05 11:42java教程網 Java教程

這篇文章主要介紹了 java notify和notifyAll的對比的相關資料,需要的朋友可以參考下

 java notifynotifyAll

首先從名字可以了解,notify是通知一個線程獲取鎖,notifyAll是通知所有相關的線程去競爭鎖。

notify不能保證獲得鎖的線程,真正需要鎖,并且可能產生死鎖

舉例1:

所有人(消費者線程)準備吃飯,食堂沒有開放(沒有釋放鎖)打飯窗口(鎖),所有人等待(WAITING)。

食堂開飯打飯窗口(釋放鎖),并廣播消息“開飯了”(notifyAll),所有人競爭排隊,并等待吃飯(BLOCKED)。每一個人依次在打飯窗口(獲得鎖)打飯(RUNNABLE)。如果想吃飯就打完飯后離開(釋放鎖),不想吃飯就直接離開(釋放鎖)。如果吃完了還想吃,就主動等待下一次“開飯了”的消息(wait)。

食堂通知一個人來吃飯(notify),此人來到打飯窗口(獲得鎖)打飯(RUNNABLE),其他人都在等待開飯的消息(WAITING)。如果想吃飯就打完飯后離開(釋放鎖),不想吃飯就直接離開(釋放鎖)。如果吃完了還想吃,就主動等待下一次“開飯”的消息(WAITING)。
notify不能保證通知到真正想吃飯的人。

舉例2:

兩個生產者P1、P2,兩個消費者C1、C2,共同操作一個隊列,隊列最大長度為1。

開始P1、P2、C1、C2都處于運行狀態(tài)(RUNNABLE)。

C1先獲得鎖,P1、P2、C2為BLOCKED狀態(tài)。C1發(fā)現(xiàn)隊列為空,主動進入WAITING。C2接著獲得鎖,成為RUNNABLE狀態(tài),發(fā)現(xiàn)隊列為空,主動進入WAITING。

P1接著獲得鎖,成為RUNNABLE狀態(tài),在隊列中插入一個元素,notify到了另一個生產者P2。P1循環(huán)生產,發(fā)現(xiàn)隊列不為空,成為WAITING。

P2成為RUNNABLE狀態(tài),發(fā)現(xiàn)隊列有值,主動進入WAITING。

此時鎖已被釋放,但P1、P2、C1、C2都處于WAITING狀態(tài),沒有線程去獲取鎖,死了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 草逼一区 | av电影在线观看免费 | 手机在线看片国产 | 久久国产精品99国产 | 久章草影院 | 国产99精品视频 | 一区二区三区日韩 | 国产精品视频海角社区88 | 久草视频国产在线 | 国产剧情v888av | 天天操很很操 | 久久精品网站视频 | 国产精品视频免费在线观看 | 国产免费v片 | 黑人一级片 | 国产免费一区二区三区网站免费 | 欧美激情图区 | 免费欧美一级视频 | 免费香蕉成视频成人网 | 久草在线资源视频 | 国产成人77亚洲精品www | 久色精品| 男人的天堂视频网站 | 久久精品亚洲精品国产欧美kt∨ | 成av人在线观看 | 高清成人在线 | 久久91亚洲精品久久91综合 | 黄色av免费| 最污网站 | 中文字幕视频在线播放 | 精精国产xxxx视频在线播放7 | 精品一区二区三区网站 | 国产精品手机在线亚洲 | 成人性视频在线 | 色在线视频网站 | 免费永久看羞羞片网站入口 | 国产婷婷一区二区三区 | 国产午夜免费福利 | 欧美成人一区二区视频 | 久久人人做 | 欧美国产精品一区二区 |