91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中實現線程掛起的方法有哪些

發布時間:2021-06-11 15:51:22 來源:億速云 閱讀:181 作者:Leah 欄目:編程語言

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

前言

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

1.suspend/resume

這種方式已經在Java中被棄用,因為它容易引起死鎖。在使用關鍵字synchronized的時候如

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

這個時候使用resume方法是無法喚醒線程的,還有一種情況是如果在resume方法之后才進行suspend方法的調用,這個也是無法進行suspend方法的喚醒的,因為這個事件發生的順序已經造成了死鎖的出現。

2.wait/notify,notifyAll

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

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

3.park/unpark

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

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

使用park/unpark的使用使用synchronized關鍵字也會出現死鎖的情況,因為它并不釋放線程所占用的鎖資源,所以使用的時候也需要注意。

上述內容就是java中實現線程掛起的方法有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

原平市| 辉县市| 宁德市| 五指山市| 惠来县| 天峨县| 哈尔滨市| 上犹县| 海阳市| 醴陵市| 邹城市| 南昌县| 关岭| 宜兰市| 建宁县| 壶关县| 雅江县| 灵石县| 丰都县| 新和县| 黑山县| 泰安市| 滨州市| 资溪县| 崇阳县| 新建县| 霍山县| 武川县| 北票市| 延长县| 静海县| 东阳市| 万荣县| 盐城市| 轮台县| 景洪市| 墨竹工卡县| 荔浦县| 永和县| 吉隆县| 屏南县|