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

溫馨提示×

溫馨提示×

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

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

Java中wait()方法和notify()方法使用時的注意事項

發布時間:2021-07-13 09:16:26 來源:億速云 閱讀:239 作者:chen 欄目:大數據

本篇內容主要講解“Java中wait()方法和notify()方法使用時的注意事項”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java中wait()方法和notify()方法使用時的注意事項”吧!

  • wait()方法和notify()方法在使用時都有一個前提條件,必須都要獲取當前對象的鎖。也就是說如果wait()方法和notify()方法在使用時沒有獲取到鎖時,程序就會直接拋出異常。

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

我們看程序出線了異常。原因是我們沒有添加synchronized關鍵字,所以線程獲取不到鎖,而直接拋出的異常。

  • wait()方法在執行完成后,會立刻釋放對象的鎖,這時其它線程依然可以執行wait()方法所在的synchronized同步方法。而notify()方法在執行完成后不會立即釋放對象的鎖,直到這個線程的synchronized同步方法執行完時才會釋放鎖。

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

我們看兩個線程都暫停了,這就說明兩個線程都獲得了執行,原因就是上面分析的一樣,wait()方法在執行完會立即釋放對象的鎖,所以線程一執行完時,線程二就可以直接獲取到鎖并執行,所以輸出是異步顯示的。下面我們在看一下notify()方法的事例。

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

我們看線程是同步執行的。原因是notify()方法在執行后不會立刻釋放對象的鎖,所以線程一在執行notify()方法后,線程二雖然已經啟動成功,但它獲取不到當前對象的鎖,因為線程一還沒有將鎖釋放,所以線程二只能等待因為方法是synchronized同步方法,所以輸出信息是同步執行的。

  • wait()方法的本質是將當前線程添加到等待隊列中,它不是線程的結束,因為它還可以恢復。notify()方法的本質是將等待隊列中某一個線程使它退出等待隊列。但如果等待隊列中的線程有很多,notify()方法也只是隨機抽取一個線程讓它退出等待隊列。

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

Java中wait()方法和notify()方法使用時的注意事項

我們看線程一已經被喚醒了,然后繼續執行了synchronized同步方法里的內容。

Java中wait()方法和notify()方法使用時的注意事項

線程狀態圖

到此,相信大家對“Java中wait()方法和notify()方法使用時的注意事項”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

旌德县| 哈巴河县| 嫩江县| 苏尼特左旗| 蓝田县| 宁德市| 南康市| 平潭县| 沂源县| 怀远县| 密山市| 楚雄市| 重庆市| 石门县| 游戏| 南雄市| 丹江口市| 长泰县| 玛沁县| 颍上县| 合山市| 太仆寺旗| 贵港市| 温宿县| 兴国县| 潞西市| 迁西县| 淮北市| 阿拉善左旗| 贡觉县| 盐源县| 武乡县| 抚松县| 无锡市| 济宁市| 古丈县| 宝鸡市| 溆浦县| 富锦市| 新巴尔虎左旗| 临江市|