日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java并发编程—notify和notifyAll有什么区别?

發布時間:2024/4/15 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发编程—notify和notifyAll有什么区别? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文作者:知乎用戶
原文地址:https://www.zhihu.com/question/37601861/answer/145545371
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

今天正好碰到這個問題,也疑惑了好久。看了一圈知乎上的答案,感覺沒說到根上。所以自己又好好Google了一下,終于找到了讓自己信服的解釋。

先說兩個概念:鎖池和等待池

  • 鎖池:假設線程A已經擁有了某個對象(注意:不是類)的鎖,而其它的線程想要調用這個對象的某個synchronized方法(或者synchronized塊),由于這些線程在進入對象的synchronized方法之前必須先獲得該對象的鎖的擁有權,但是該對象的鎖目前正被線程A擁有,所以這些線程就進入了該對象的鎖池中(鎖池就是AQS隊列)。
  • 等待池:假設一個線程A調用了某個對象的wait()方法,線程A就會釋放該對象的鎖后,進入到了該對象的等待池中(等待池就是WaitQueue隊列))

Reference:

  • java中的鎖池和等待池
  • Java并發編程—線程間協作方式wait()/notify()/notifyAll()原理分析

然后再來說notify和notifyAll的區別

  • 如果線程調用了對象的 wait()方法,那么線程便會處于該對象的等待池中,等待池中的線程不會去競爭該對象的鎖
  • 當有線程調用了對象的 notifyAll()方法(喚醒所有 wait 線程)或 notify()方法(只隨機喚醒一個 wait 線程),被喚醒的的線程便會進入該對象的鎖池中,鎖池中的線程會去競爭該對象鎖。也就是說,調用了notify后只要一個線程會由等待池進入鎖池,而notifyAll會將該對象等待池內的所有線程移動到鎖池中,等待鎖競爭
  • 優先級高的線程競爭到對象鎖的概率大,假若某線程沒有競爭到該對象鎖,它還會留在鎖池中,唯有線程再次調用 wait()方法,它才會重新回到等待池中。而競爭到對象鎖的線程則繼續往下執行,直到執行完了 synchronized 代碼塊,它會釋放掉該對象鎖,這時鎖池中的線程會繼續競爭該對象鎖。
Reference:線程間協作:wait、notify、notifyAll

綜上,所謂喚醒線程,另一種解釋可以說是將線程由等待池移動到鎖池,notifyAll調用后,會將全部線程由等待池移到鎖池,然后參與鎖的競爭,競爭成功則繼續執行,如果不成功則留在鎖池等待鎖被釋放后再次參與競爭。而notify只會喚醒一個線程。有了這些理論基礎,后面的notify可能會導致死鎖,而notifyAll則不會的例子也就好解釋了。上述過程的圖示如下:

?

notify方法和notifyAll()方法兩者非常相似,到底該用哪一個,老實說,這個選擇有點困難。選擇notify的話,因為要喚醒的線程比較少(only one),程序的處理速度當然比notifyAll略勝一籌。但是選擇notify時,若這部分處理不好,可能會出現程序掛掉的危險。一般說來,選擇notifyAll所寫出來的程序代碼會比notify可靠。除非你能確定程序員對程序代碼的意義和能力限度一清二楚,否則選擇notifyAll應該是比較穩扎穩打。

總結

以上是生活随笔為你收集整理的Java并发编程—notify和notifyAll有什么区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人张开腿让男人插 | 国产精品久久久久影院色老大 | 台湾swag在线观看 | 日韩性生交大片免费看 | 国产性―交―乱―色―情人 | 亚州欧美 | 亚洲有吗在线 | 日本一二三区视频在线 | 国产乱人伦app精品久久 | 欧美黑人做爰爽爽爽 | 大地资源高清播放在线观看 | 日韩中文字幕在线免费观看 | 激情视频网站 | 激情视频网站在线观看 | 99re中文字幕 | 欧美一区二区三区久久综合 | www操| 肉大捧一进一出免费视频 | 午夜影院操 | 午夜影视免费 | 亚洲精品国产精品乱码 | 午夜精品久久久久久久四虎美女版 | 麻豆黄色网 | 国产探花一区二区三区 | 小毛片在线观看 | 成人福利网址 | 久久99精品久久久久久水蜜桃 | 哺乳期喷奶水丰满少妇 | 成人综合婷婷国产精品久久 | 日韩精品电影在线观看 | 免费观看理伦片在线播放视频软件 | 特一级黄色大片 | 国产精品一色哟哟哟 | 久草免费在线视频观看 | 欧美黑人欧美精品刺激 | av在线网址观看 | 看免费一级片 | 人人干人人爽 | 日日夜夜人人 | 人妻在线一区二区 | 欧美日韩一区二区三区四区五区六区 | 欧美精品欧美极品欧美激情 | 男女做网站 | 色悠悠视频 | 椎名由奈av一区二区三区 | 日韩久久久 | 国产a v一区二区三区 | 大香蕉精品一区 | 玖玖爱在线观看 | 日本一区不卡在线 | 国产精品高潮呻吟久久av黑人 | 久色在线| 99re在线精品视频 | 天天激情站 | 91吃瓜今日吃瓜入口 | 人妻精品一区二区三区 | 波多野结衣视频免费看 | 日韩精品一线二线三线 | 欧美日韩精品在线视频 | av免费资源 | 少妇69xx | 国产欧美日 | 男女做那个的全过程 | 福利在线观看 | 欧美另类极品videosbest使用方法 | 伊人精品视频 | 国产精品久久久久毛片大屁完整版 | 日本一区二区三区久久久久 | 麻豆亚洲av熟女国产一区二 | 日本免费三区 | 国内视频精品 | 99999精品视频 | 欧美在线一区视频 | 美女久久久久久久久久 | 欧美特黄aaa| 毛片一区二区三区 | 国产在线中文字幕 | 偷偷色噜狠狠狠狠的777米奇 | 自拍偷拍欧美激情 | 欧州一区 | 日韩伦人妻无码 | 无码人妻精品一区二区蜜桃网站 | yjizz视频| 在线看免费毛片 | a级片视频网站 | 日韩少妇视频 | 一区二区三区亚洲视频 | 国产亚洲精品久久 | 国产黄a三级三级看三级 | 国产欧美日 | 牛牛电影国产一区二区 | 黄色一级免费视频 | 欧美日韩一区三区 | 在线免费观看一区二区三区 | 秋霞影院午夜丰满少妇在线视频 | 国产思思99re99在线观看 | 日韩影视一区二区三区 | 久久极品 | 国产成人+综合亚洲+天堂 |