日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java中notify()和notifyAll()的使用區(qū)別

瀏覽:128日期:2022-08-09 18:16:03

notify() 和 notifyAll() 有什么區(qū)別?

先解釋兩個(gè)概念。 等待池:假設(shè)一個(gè)線(xiàn)程A調(diào)用了某個(gè)對(duì)象的wait()方法,線(xiàn)程A就會(huì)釋放該對(duì)象的鎖后,進(jìn)入到了該對(duì)象的等待池,等待池中的線(xiàn)程不會(huì)去競(jìng)爭(zhēng)該對(duì)象的鎖。 鎖池:只有獲取了對(duì)象的鎖,線(xiàn)程才能執(zhí)行對(duì)象的 synchronized 代碼,對(duì)象的鎖每次只有一個(gè)線(xiàn)程可以獲得,其他線(xiàn)程只能在鎖池中等待然后再來(lái)說(shuō)notify和notifyAll的區(qū)別 如果線(xiàn)程調(diào)用了對(duì)象的 wait()方法,那么線(xiàn)程便會(huì)處于該對(duì)象的等待池中,等待池中的線(xiàn)程不會(huì)去競(jìng)爭(zhēng)該對(duì)象的鎖。 當(dāng)有線(xiàn)程調(diào)用了對(duì)象的 notifyAll()方法(喚醒所有 wait 線(xiàn)程)或 notify()方法(只隨機(jī)喚醒一個(gè) wait 線(xiàn)程),被喚醒的的線(xiàn)程便會(huì)進(jìn)入該對(duì)象的鎖池中,鎖池中的線(xiàn)程會(huì)去競(jìng)爭(zhēng)該對(duì)象鎖。也就是說(shuō),調(diào)用了notify后只要一個(gè)線(xiàn)程會(huì)由等待池進(jìn)入鎖池,而notifyAll會(huì)將該對(duì)象等待池內(nèi)的所有線(xiàn)程移動(dòng)到鎖池中,等待鎖競(jìng)爭(zhēng) 優(yōu)先級(jí)高的線(xiàn)程競(jìng)爭(zhēng)到對(duì)象鎖的概率大,假若某線(xiàn)程沒(méi)有競(jìng)爭(zhēng)到該對(duì)象鎖,它還會(huì)留在鎖池中,唯有線(xiàn)程再次調(diào)用 wait()方法,它才會(huì)重新回到等待池中。而競(jìng)爭(zhēng)到對(duì)象鎖的線(xiàn)程則繼續(xù)往下執(zhí)行,直到執(zhí)行完了 synchronized 代碼塊,它會(huì)釋放掉該對(duì)象鎖,這時(shí)鎖池中的線(xiàn)程會(huì)繼續(xù)競(jìng)爭(zhēng)該對(duì)象鎖。

綜上,所謂喚醒線(xiàn)程,另一種解釋可以說(shuō)是將線(xiàn)程由等待池移動(dòng)到鎖池,notifyAll調(diào)用后,會(huì)將全部線(xiàn)程由等待池移到鎖池,然后參與鎖的競(jìng)爭(zhēng),競(jìng)爭(zhēng)成功則繼續(xù)執(zhí)行,如果不成功則留在鎖池等待鎖被釋放后再次參與競(jìng)爭(zhēng)。而notify只會(huì)喚醒一個(gè)線(xiàn)程。

有了這些理論基礎(chǔ),后面的notify可能會(huì)導(dǎo)致死鎖,而notifyAll則不會(huì)的例子也就好解釋了

測(cè)試代碼

public class TestNotifyNotifyAll { private static Object obj = new Object(); public static void main(String[] args) { //測(cè)試 RunnableImplA wait() Thread t1 = new Thread(new RunnableImplA(obj)); Thread t2 = new Thread(new RunnableImplA(obj)); t1.start(); t2.start(); //RunnableImplB notify() Thread t3 = new Thread(new RunnableImplB(obj)); t3.start(); // //RunnableImplC notifyAll()// Thread t4 = new Thread(new RunnableImplC(obj));// t4.start(); } } class RunnableImplA implements Runnable { private Object obj; public RunnableImplA(Object obj) { this.obj = obj; } public void run() { System.out.println('run on RunnableImplA'); synchronized (obj) { System.out.println('obj to wait on RunnableImplA'); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println('obj continue to run on RunnableImplA'); } }} class RunnableImplB implements Runnable { private Object obj; public RunnableImplB(Object obj) { this.obj = obj; } public void run() { System.out.println('run on RunnableImplB'); System.out.println('睡眠3秒...'); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj) { System.out.println('notify obj on RunnableImplB'); obj.notify(); } }} class RunnableImplC implements Runnable { private Object obj; public RunnableImplC(Object obj) { this.obj = obj; } public void run() { System.out.println('run on RunnableImplC'); System.out.println('睡眠3秒...'); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj) { System.out.println('notifyAll obj on RunnableImplC'); obj.notifyAll(); } }}

結(jié)果:僅調(diào)用一次 obj.notify(),線(xiàn)程 t1 或 t2 中的一個(gè)始終在等待被喚醒,程序不終止

run on RunnableImplAobj to wait on RunnableImplArun on RunnableImplAobj to wait on RunnableImplArun on RunnableImplB睡眠3秒...notify obj on RunnableImplBobj continue to run on RunnableImplA

把 t3 注掉,啟動(dòng) t4 線(xiàn)程。調(diào)用 obj.notifyAll() 方法

public class TestNotifyNotifyAll { private static Object obj = new Object(); public static void main(String[] args) { //測(cè)試 RunnableImplA wait() Thread t1 = new Thread(new RunnableImplA(obj)); Thread t2 = new Thread(new RunnableImplA(obj)); t1.start(); t2.start(); // //RunnableImplB notify()// Thread t3 = new Thread(new RunnableImplB(obj));// t3.start(); //RunnableImplC notifyAll() Thread t4 = new Thread(new RunnableImplC(obj)); t4.start(); } }

結(jié)果:t1、t2線(xiàn)程均可以執(zhí)行完畢

run on RunnableImplAobj to wait on RunnableImplArun on RunnableImplAobj to wait on RunnableImplArun on RunnableImplC睡眠3秒...notifyAll obj on RunnableImplCobj continue to run on RunnableImplAobj continue to run on RunnableImplA

到此這篇關(guān)于Java中notify()和notifyAll()的使用區(qū)別的文章就介紹到這了,更多相關(guān)Java notify()和notifyAll()內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产综合网| 激情五月综合网| 欧美亚洲国产精品久久| 久久久亚洲一区| 久久精品卡一| 久久99青青| 亚洲久久一区| 亚州av一区| 麻豆免费精品视频| 久久久久久久欧美精品| 精品美女久久| 国产亚洲一区二区手机在线观看| www.九色在线| 亚洲婷婷在线| 亚欧洲精品视频在线观看| 99热国内精品| 久久久久中文| 色8久久久久| 嫩呦国产一区二区三区av| 青青青免费在线视频| av不卡免费看| 国产精品一区二区三区av麻| 国产免费久久| 香蕉精品视频在线观看| 日本不卡中文字幕| av综合电影网站| 日韩精品欧美大片| 日韩伦理在线一区| 亚洲精品在线二区| 久久蜜桃资源一区二区老牛| 日韩1区2区3区| 丝袜美腿诱惑一区二区三区| 亚洲欧美在线综合| 日韩高清中文字幕一区二区| 日韩精品一页| 久久高清精品| 国产精品15p| 不卡中文字幕| 精品视频在线观看网站| 丝袜美腿亚洲色图| 日韩黄色大片| 国产精品久久久久久久久久妞妞 | 日韩激情综合| 黄色av一区| 久久国产日本精品| 丰满少妇一区| 欧美亚洲综合视频| 亚洲深夜影院| 女生影院久久| 精品国产欧美日韩一区二区三区| 一区二区高清| 手机精品视频在线观看| 国内精品福利| 亚洲成av人片一区二区密柚| 麻豆视频一区二区| 捆绑调教美女网站视频一区| 日本v片在线高清不卡在线观看| 亚洲欧美日本日韩| 久久精品导航| 欧美影院三区| 在线 亚洲欧美在线综合一区| 久久久久99| 欧美日韩中文一区二区| 91精品一区国产高清在线gif | 亚欧成人精品| 亚洲字幕久久| 日韩av二区在线播放| 青草国产精品| 免费亚洲婷婷| 视频一区在线播放| 午夜久久久久| 中文字幕一区二区三区日韩精品 | 在线看片国产福利你懂的| 色婷婷亚洲mv天堂mv在影片| 欧美xxxx中国| 激情久久久久久| 久久xxxx精品视频| 国产亚洲欧美日韩精品一区二区三区 | 综合国产精品| 国产欧美亚洲一区| 韩国三级一区| 亚洲专区视频| caoporn视频在线| 午夜宅男久久久| 国产精品伊人| 啪啪国产精品| 久久香蕉精品| 国产麻豆一区二区三区精品视频| 精品三级av在线导航| 免费欧美一区| 国产精品视频一区视频二区| 伊伊综合在线| 亚洲精品系列| 欧美精品资源| 国产精品久久久一区二区| 久久蜜桃精品| 精品国产一区二区三区av片| 视频一区国产视频| 久久99久久人婷婷精品综合| 亚洲调教视频在线观看| 国产精品mm| 亚洲影院天堂中文av色| 亚洲女同av| 日韩高清一区在线| 欧美日韩一二| 精品国产鲁一鲁****| 日韩欧美激情| 一区二区精品| 在线亚洲精品| 青草久久视频| 99国产精品| 国产精品tv| 黄色成人在线网址| 老司机精品视频网| 日韩欧乱色一区二区三区在线| 日韩中文在线播放| 狠狠久久伊人| 精品免费视频| 国产精品视频一区二区三区综合 | 精品99在线| 国产日韩一区二区三区在线| 亚洲久久视频| 中文字幕日韩高清在线| 日韩精品一二三| 视频一区中文字幕国产| 蜜臀久久99精品久久久久久9| 欧美日韩一二| 激情五月色综合国产精品| 亚洲啊v在线| 久草免费在线视频| 亚洲国产专区校园欧美| 999久久久91| 一本一道久久a久久精品蜜桃| 999久久久免费精品国产| 特黄特色欧美大片| 夜夜精品视频| 91成人在线网站| 久久免费精品| 日韩精品中文字幕第1页| 久久精品国产99久久| 亚洲激情另类| 日本国产一区| 成人一二三区| 99久久www免费| 免费不卡中文字幕在线| 亚洲精品麻豆| 日本一区二区免费高清| 亚洲欧美伊人| 18国产精品| 国产一区二区三区自拍| 老色鬼久久亚洲一区二区| 欧美日韩精品一区二区三区视频 | 精品一区二区三区的国产在线观看 | 激情婷婷久久| 91综合久久爱com| 国产精品不卡| 亚洲精品乱码久久久久久蜜桃麻豆| 国产日韩在线观看视频| 亚洲福利免费| 久久不见久久见免费视频7| 久久精品官网| 国产精品亚洲产品| 国产精品三上| 美女高潮久久久| 久久成人精品| 国产综合色区在线观看| 日韩动漫一区| 欧美.日韩.国产.一区.二区 | 99riav1国产精品视频| 久久久国产精品网站| 国产模特精品视频久久久久| 久久精品一本| 亚洲毛片在线| 亚洲综合精品| 欧美日韩视频网站| 国产精品一区三区在线观看| 国产韩日影视精品| 久久午夜影院| 精品久久福利| 麻豆91在线播放| 国产精品最新自拍| 国产极品嫩模在线观看91精品| 首页亚洲欧美制服丝腿| 性欧美69xoxoxoxo| 国产91一区| 免费国产自久久久久三四区久久 | 在线精品一区| 亚洲精品97| 国内亚洲精品| 久久亚洲在线| 91看片一区| 色婷婷精品视频| 超碰在线99| 久久uomeier| 久久人人精品| 日韩在线观看不卡| 婷婷激情图片久久| 尤物精品在线| 亚洲三级观看| 国产精一区二区|