JAVA 防止死鎖

2021-08-30 12:02:08 字數 357 閱讀 4464

1、在程式中盡量使用開放呼叫。依賴於開放呼叫的程式,相比於那些在持有鎖的時候還呼叫外部方法的程式,更容易進行死鎖自由度的分析。重新構建synchronized使開放呼叫更加安全。所謂開放呼叫是指呼叫的方法本身沒有加鎖,但是要以對方法操作的內容進行加鎖。

2、如果你必須獲得多個鎖,那麼鎖的順序必須是你設計工作的一部分:儘量減少潛在鎖之間的互動數量,遵守並文件化該鎖順序協議。監測**中死鎖自由度的策略有:

1)識別什麼地方會獲取多個鎖,並使鎖數量盡可能少,保證它們的順序在程式中一致。

2)在沒有非開放呼叫的程式中,發現那些獲得多重鎖的例項是非常簡單的。

3、嘗試定時的鎖,使用每個顯式lock類中定時trylock特性,來替代使用內部鎖機制。

如何防止死鎖

作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中...

死鎖的產生,防止,避免

在多工系統下,當乙個或多個程序等待對方的資源,而在等待對方資源之前不會釋放得到的資源,這樣造成迴圈等待的一種現象。競爭系統資源 程序的推進順序不當 1.資源互斥 資源不共享 每個資源要麼已經分配給乙個程序,要麼是可用的,只有這兩種狀態,資源不可以被共享使用 2.請求並保持 已經的到資源的程序還可以繼...

死鎖概念?產生死鎖必要條件?如何防止死鎖?

死鎖概念 所謂死鎖,是指兩個或者兩個以上執行緒在執行過程中,因爭奪資源而產生互相等待的現象,若無外力作用,他們都將無法推進下去,此時,稱系統處於死鎖。死鎖產生的四個必要條件 1 互斥條件 程序對所分配的資源進行排它性使用,即在一段時間內某資源只由乙個程序占用。如果此時,還有其它的程序請求該資源,則請...