真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中實(shí)現(xiàn)線程掛起的方法有哪些

本篇文章為大家展示了java中實(shí)現(xiàn)線程掛起的方法有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站 - 成都二樞服務(wù)器租用托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),成都二樞服務(wù)器租用托管,西南服務(wù)器托管,四川/成都大帶寬,服務(wù)器機(jī)柜,四川老牌IDC服務(wù)商

前言

在Java中使用線程的時候肯定會有線程掛起的這種情況出現(xiàn),在Java中提供了3種方式:suspend/resume、wait/notify,notifyAll、park/unpark。

1.suspend/resume

這種方式已經(jīng)在Java中被棄用,因?yàn)樗菀滓鹚梨i。在使用關(guān)鍵字synchronized的時候如

synchronized (this) { 
 Thread.currentThread().suspend(); 
}

這個時候使用resume方法是無法喚醒線程的,還有一種情況是如果在resume方法之后才進(jìn)行suspend方法的調(diào)用,這個也是無法進(jìn)行suspend方法的喚醒的,因?yàn)檫@個事件發(fā)生的順序已經(jīng)造成了死鎖的出現(xiàn)。

2.wait/notify,notifyAll

這個是Java中常用的線程掛起方法,當(dāng)調(diào)用wait方法的時候線程會自動的釋放掉占有的線程資源鎖,然后通過notify或notifyAll方法進(jìn)行wait方法的喚醒,因此在這個地方不會出現(xiàn)死鎖,當(dāng)時如suspend/resume中提到的,如果在notify或notifyAll方法之后在進(jìn)行wait操作,那么肯定也是會出現(xiàn)死鎖的。

這里必須說明一下的是sleep方法,雖然它也能將線程掛起,但是它會產(chǎn)生InterruptedException異常,當(dāng)sleep一定時間后它將會自動執(zhí)行后面的方法,也可以通過interrupt方法進(jìn)行主動打斷sleep方法進(jìn)行線程喚醒。

3.park/unpark

park的字面量意思是指停車場的意思,使用park來掛起線程后需要調(diào)用unpark來進(jìn)行喚醒,這個沒有先后順序的區(qū)分,如果你提前進(jìn)行了unpark,然后在進(jìn)行park也是可以的,但是提前了的多個unpark只能看做是一個unpark,不能進(jìn)行重復(fù)疊加,如果再次park的話需要新的unpark來進(jìn)行喚醒操作,這個比如你在停車場進(jìn)行停車操作,你如果提前進(jìn)行了預(yù)約停車,你在未進(jìn)入停車場之前都是可以進(jìn)行多次預(yù)約的,這所有的預(yù)約只扣一次錢(unpark),但是這所有的預(yù)約操作都看作是你這一次進(jìn)入停車場停車(park)的憑證,如果你離開了通過繳費(fèi)憑證(unpark)一旦你想進(jìn)行下一次停車,那么已經(jīng)使用過的預(yù)約都不能進(jìn)行作數(shù)了,你只能再次預(yù)約或者直接進(jìn)入停車場,一旦要離開只能再次繳費(fèi)(unpark)。

調(diào)用park/unpark使用的是LockSupport.park()/LockSupport.unpark()。

使用park/unpark的使用使用synchronized關(guān)鍵字也會出現(xiàn)死鎖的情況,因?yàn)樗⒉会尫啪€程所占用的鎖資源,所以使用的時候也需要注意。

上述內(nèi)容就是java中實(shí)現(xiàn)線程掛起的方法有哪些,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:java中實(shí)現(xiàn)線程掛起的方法有哪些
當(dāng)前路徑:http://weahome.cn/article/jsogid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部