亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Java線(xiàn)程阻塞方法sleep()與wait()的全面講解

瀏覽:58日期:2022-08-16 15:03:54
一、前期基礎(chǔ)知識(shí)儲(chǔ)備

sleep()和wait()方法都是Java中造成線(xiàn)程阻塞的方法。感興趣的讀者可以參見(jiàn)筆者之前的文章《Java中什么方法導(dǎo)致線(xiàn)程阻塞》,里面詳細(xì)講述了為什么Java要造成線(xiàn)程阻塞和Java中造成線(xiàn)程阻塞的幾種方法。

(1)線(xiàn)程的生命周期

Java線(xiàn)程阻塞方法sleep()與wait()的全面講解

這是筆者在谷歌圖片中找到的一張簡(jiǎn)單描述線(xiàn)程生命周期的圖片,可以看到,一個(gè)線(xiàn)程正常的生命周期中會(huì)經(jīng)歷“創(chuàng)建”“就緒”“運(yùn)行”“阻塞”“運(yùn)行”“死亡”等幾個(gè)生命周期,其中“阻塞”是我們開(kāi)發(fā)者非常需要關(guān)注的,因?yàn)橥ㄟ^(guò)Java提供的阻塞方法,可以做到資源和線(xiàn)程最合理的調(diào)配,而其中sleep()和wait()方法就是Java中實(shí)現(xiàn)線(xiàn)程阻塞的關(guān)鍵性方法。

(2)sleep()和wait()方法的阻塞線(xiàn)程的場(chǎng)景

我們這里,來(lái)看第二張圖片,這張圖片就比較詳細(xì)的向我們展現(xiàn)了一個(gè)線(xiàn)程的完整生命周期中發(fā)生的各種“事件”和調(diào)用的各種方法。

我們來(lái)總結(jié)一下sleep()和wait()方法的阻塞場(chǎng)景。

Java線(xiàn)程阻塞方法sleep()與wait()的全面講解

①sleep()實(shí)現(xiàn)線(xiàn)程阻塞的方法,我們稱(chēng)之為“線(xiàn)程睡眠”,方式是超時(shí)等待,怎么理解?就是sleep()通過(guò)傳入“睡眠時(shí)間”作為方法的參數(shù),時(shí)間一到就從“睡眠”中“醒來(lái)”;

②wait()方法實(shí)現(xiàn)線(xiàn)程阻塞的方法,我們稱(chēng)之為“線(xiàn)程等待”,方式有兩種:

1)和sleep()方法一樣,通過(guò)傳入“睡眠時(shí)間”作為參數(shù),時(shí)間到了就“醒了”;

2)不傳入時(shí)間,進(jìn)行一次“無(wú)限期的等待”,只用通過(guò)notify()方法來(lái)“喚醒”。

二、sleep()和wait()的區(qū)別

通過(guò)上面兩幅圖的展示和筆者的相關(guān)描述,相信讀者你已經(jīng)有幾分清楚了,sleep()和wait()方法的區(qū)別之一,就是實(shí)現(xiàn)線(xiàn)程阻塞的方式不一樣。

那么sleep()和wait()二者還有一個(gè)很大的區(qū)別就是,二者“是否釋放同步鎖”不一樣。我們都知道,多線(xiàn)程開(kāi)發(fā)中,為了實(shí)現(xiàn)不同線(xiàn)程間的同步會(huì)采用同步鎖的方式——synchronized即在線(xiàn)程使用一個(gè)資源時(shí)為其加鎖,這樣其他的線(xiàn)程便不能訪(fǎng)問(wèn)那個(gè)資源了,直到解鎖后才可以訪(fǎng)問(wèn)。

感興趣的讀者可以參考筆者之前文章《利用synchronized實(shí)現(xiàn)線(xiàn)程同步》里面詳細(xì)介紹了多線(xiàn)程開(kāi)發(fā)中利用synchronized實(shí)現(xiàn)線(xiàn)程同步的方式。

而使用sleep()和wait()兩種方法對(duì)于“CPU執(zhí)行權(quán)”和“同步鎖”的方式不同:

①sleep()釋放CPU執(zhí)行權(quán),但不釋放同步鎖;

②wait()釋放CPU執(zhí)行權(quán),也釋放同步鎖,使得其他線(xiàn)程可以使用同步控制塊或者方法。

以上,就是sleep()和wait()方法的兩個(gè)關(guān)鍵性區(qū)別。

總結(jié):綜上我們利用下表展示sleep()和wait()的所有區(qū)別:

Java線(xiàn)程阻塞方法sleep()與wait()的全面講解

ps:謝謝博友的更正。這里進(jìn)行改正: wait()為Object基類(lèi)中的方法,調(diào)用時(shí)亦需要捕獲異常,以下為wait()可能拋出的異常:

Java線(xiàn)程阻塞方法sleep()與wait()的全面講解

PS:能用圖說(shuō)明的問(wèn)題,我們就用圖來(lái)說(shuō)明,能用表說(shuō)明的問(wèn)題,我們就用表來(lái)說(shuō)明,這樣理解起來(lái)非常清晰。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品大片 | 久久久久亚洲 | 在线亚洲日产一区二区 | 国产三级黄色 | 欧美三级第一页 | 久青青| 日本一级特黄完整大片 | 一级毛片a女人刺激视频免费 | 黄色一级在线 | 美女免费视频一区二区 | 精品视自拍视频在线观看 | 91香蕉国产在线观看人员 | 中国国产aa一级毛片 | 亚洲无吗在线视频 | 日韩中文字幕第一页 | 国产剧情网站 | 亚洲国产欧美精品一区二区三区 | 国产综合图片 | 亚洲国产欧美自拍 | 最刺激黄a大片老师 | 一级毛片中国 | 国产精品成人观看视频网站 | 做爰全过程免费的视69频 | 羞羞一区二区三区四区片 | 日韩一级欧美一级毛片在 | 国产美女在线播放 | 中文字幕亚洲国产 | 青青热久麻豆精品视频在线观看 | 自拍偷拍视频在线观看 | 国产精品成人观看视频国产奇米 | 国产日韩精品欧美一区视频 | 国内精品福利 | 国产日韩欧美在线一区二区三区 | 干成人网 | 日本免费二区三区久久 | 久草色播 | 国产dvd毛片在线视频 | 久久午夜精品 | 亚洲欧洲精品视频在线观看 | 日本一级特大毛片 | 寡妇一级a毛片免费播放 |