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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java归还线程_再谈java线程

發(fā)布時(shí)間:2024/10/8 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java归还线程_再谈java线程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是等待喚醒機(jī)制?

這是多個(gè)線程間的一種協(xié)作機(jī)制。

就是一個(gè)線程進(jìn)行規(guī)定協(xié)作后,就進(jìn)入到了等待狀態(tài)'wait()',等待其他線程執(zhí)行完他們的指定代碼后,再將其喚醒'notify()';

在有多個(gè)線程進(jìn)行等待時(shí),如果需要,可以使用'notifyAll()'來(lái)喚醒所有的等待線程。

wait/notify就是線程間的一種協(xié)作機(jī)制。

等待喚醒中的方法;

等待喚醒機(jī)制就是用來(lái)解決線程間通信問(wèn)題的。可以使用到的方法有三個(gè)如下

1.wait();線程不在活動(dòng),不在參與調(diào)度,進(jìn)入到waiting設(shè)置中,因此不會(huì)浪費(fèi)cpu資源,也不會(huì)去競(jìng)爭(zhēng)鎖了,這時(shí)的線程狀態(tài)就是waiting,他還要等著別的線程執(zhí)行一個(gè)特別的動(dòng)作,就是喚醒通知'notify()',在這個(gè)對(duì)象上等待的線程從wait set中釋放出來(lái),重新進(jìn)入到調(diào)度隊(duì)列(ready queue)中。

2.notify();選取通知對(duì)象的wait set中的一個(gè)線程釋放。

3.notifyAll();釋放所通知對(duì)象的wait set中的全部線程。

//備注;哪怕只同時(shí)了一個(gè)等待線程,被通知的線程也不能立即回復(fù)執(zhí)行,因?yàn)樗?dāng)初中斷的地方是在同步塊內(nèi),而此刻它已經(jīng)不持有鎖了,所以它需要再次嘗試著去獲取鎖(很可能面臨其他線程的競(jìng)爭(zhēng)),成功后才能當(dāng)初調(diào)用wait方法之后的地方恢復(fù)執(zhí)行。

//總結(jié);如果能獲取到鎖,線程就從waiting狀態(tài)轉(zhuǎn)變成runnable狀態(tài),否則,從wait set中,又進(jìn)入set中,線程就從waiting狀態(tài)轉(zhuǎn)變成blocked狀態(tài)。

'調(diào)用wait和notify方法的注意細(xì)節(jié):'

1.wait方法和notify方法必須有同一個(gè)鎖對(duì)象調(diào)用。因?yàn)?#xff0c;對(duì)應(yīng)的鎖對(duì)象可以通過(guò)notify喚醒使用同一個(gè)鎖對(duì)象的wait方法后的線程。

2.wait與notify方法是屬于Object類中的方法。因?yàn)殒i對(duì)象可以是任意對(duì)象,而任意對(duì)象的所屬類都是繼承了Object類的。

3.wait與notify方法必須在同步代碼塊中或者同步方法中使用。因?yàn)楸仨毻ㄟ^(guò)鎖對(duì)象調(diào)用這兩個(gè)方法來(lái)實(shí)現(xiàn)等待與喚醒。

包子鋪線程生產(chǎn)包子,吃貨線程消費(fèi)包子,當(dāng)包子沒的時(shí)候狀態(tài)為false,吃貨線程需要等待,包子鋪線程生產(chǎn)包子包子狀態(tài)為true,通知吃貨線程并解除吃貨狀態(tài),因?yàn)橐呀?jīng)有包子,,包子鋪線程進(jìn)入等待狀態(tài),接下來(lái),吃貨線程能夠進(jìn)一步取決于鎖的獲取狀態(tài)情況,如果吃貨線程取得到了鎖,就執(zhí)行吃包子動(dòng)作,包子吃完了包子狀態(tài)為false,通知包子鋪線程解除包子鋪線程等待狀態(tài),此時(shí)吃貨線程就進(jìn)入到等待狀態(tài),包子鋪線程能否進(jìn)一步執(zhí)行則取決于鎖的獲取情況。

總結(jié)

以上是生活随笔為你收集整理的java归还线程_再谈java线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。