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

溫馨提示×

溫馨提示×

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

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

Java多線程產生死鎖的必要條件

發布時間:2020-09-03 00:41:06 來源:腳本之家 閱讀:191 作者:李燦輝 欄目:編程語言

線程死鎖是指由于兩個或者多個線程互相持有對方所需要的資源,導致這些線程處于等待狀態,無法前往執行。當線程進入對象的synchronized代碼塊時,便占有了資源,直到它退出該代碼塊或者調用wait方法,才釋放資源,在此期間,其他線程將不能進入該代碼塊。當線程互相持有對方所需要的資源時,會互相等待對方釋放資源,如果線程都不主動釋放所占有的資源,將產生死鎖。

死鎖是操作系統里里面的一個重要的概念,死鎖通常發生在并發的場景里。

死鎖是多個進程或線程,彼此爭搶資源而陷入僵局的一種情況。

在筆者參加的多次面試中,發現不少候選人雖然大概知道死鎖是一種因為爭搶資源引起的問題,但真的要寫一個死鎖的例子的話,還是有不少候選人不知道該如何下手。

其實,真正理清楚了死鎖產生的必要的條件,寫出一個死鎖的例子并不困難。那么,就java的多線程而言,產生死鎖有哪些必要條件呢?

  • 1,必須有2個或以上的線程。一個線程是不會產生死鎖的,它頂多產生等待。
  • 2,必須有2個臨界資源,即,必須有2個鎖。這也是死鎖產生的必要的條件。當只有一個臨界資源,或者說只有一個鎖時,當一個線程獲取了鎖,另一個線程雖然暫時無法獲取鎖,但它至多也就是需要進行等待。而不會陷入死鎖。
  • 3,兩個線程,每個線程都獲取了其中的一個鎖,但為了完成工作,還需對方的另一個鎖。這種情況下,才會產生死鎖。這種情況也稱為循環等待。
  • 4,不可剝奪。

以上即為死鎖產生的必要條件。

避免死鎖可以概括成三種方法:

  • 固定加鎖的順序(針對鎖順序死鎖)
  • 開放調用(針對對象之間協作造成的死鎖)
  • 使用定時鎖-->tryLock()

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

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

AI

公安县| 伊川县| 钦州市| 清徐县| 襄垣县| 高碑店市| 布尔津县| 五河县| 台州市| 会理县| 龙门县| 新密市| 乡宁县| 中卫市| 广南县| 田东县| 宝清县| 新源县| 通城县| 翼城县| 民权县| 道真| 建宁县| 黄平县| 高唐县| 美姑县| 镶黄旗| 新民市| 柘荣县| 桑日县| 鹤岗市| 五寨县| 潞城市| 体育| 沙田区| 侯马市| 喜德县| 靖边县| 吴桥县| 阿拉善右旗| 高邑县|