寫乙個死鎖的例子

2021-09-26 09:25:18 字數 950 閱讀 1072

這是乙個很好玩的題,做併發的話,不小心能寫出來。

讓你寫乙個一定死鎖的例子,沒有思考過的話,確實不容易。

下邊的是**的乙個,別人寫的。非常典型的乙個互相等待導致的死鎖的例子,很好理解。

package com.spri.test;  

/** 

* 在實際程式設計中,要盡量避免出現死鎖的情況,但是讓你故意寫乙個死鎖的程式時似乎也不太簡單(有公司會出這樣的面試題),

* 以下是乙個簡單的死鎖例子。

* 執行緒的同步化可能會造成死鎖,死鎖發生在兩個執行緒相互持有對方正在等待的東西(實際是兩個執行緒共享的東西)。

* 只要有兩個執行緒和兩個物件就可能產生死鎖。

* 乙個簡單的死鎖類 

* 當deadlock類的物件flag==1時(td1),先鎖定o1,睡眠500毫秒 

* 而td1在睡眠的時候另乙個flag==0的物件(td2)執行緒啟動,先鎖定o2,睡眠500毫秒 

* td1睡眠結束後需要鎖定o2才能繼續執行,而此時o2已被td2鎖定; 

* td2睡眠結束後需要鎖定o1才能繼續執行,而此時o1已被td1鎖定; 

* td1、td2相互等待,都需要得到對方鎖定的資源才能繼續執行,從而死鎖。 

*/  

public class deadlock implements runnable catch (exception e)  

synchronized (o2)  

}  }  

if (flag == 0) catch (exception e)  

synchronized (o1)  

}  }  

}  public static void main(string args)  

}

寫乙個死鎖

死鎖產生的原因 乙個執行緒進入鎖一需要鎖二,另乙個執行緒進入鎖二需要鎖一,由於鎖一鎖二都被佔了,所以執行緒執行不下去。所以只需寫乙個相互交叉的鎖一鎖二就可以產生死鎖。class sisuogoucheng implements runnable public void run if panduan ...

舉乙個死鎖的例子

大家工作中或者面試的時候,會碰到死鎖的問題,大家都聽說過兩個執行緒互相等待,從而導致等死 鎖 的情況吧,就是執行緒1持有物件1的鎖,執行緒2持有物件2的鎖,然後兩者都等待對方釋放其持有物件的鎖,然後一直等,等到死亡。但是聽是都聽過,若有人讓你寫個例子呢?下面就舉個例子 public class di...

死鎖的誕生,寫乙個簡單的死鎖例項

在實際程式設計中,要盡量避免出現死鎖的情況,但是讓你故意寫乙個死鎖的程式時似乎也不太簡單 有公司會出這樣的面試題 以下是乙個簡單的死鎖例子。執行緒的同步化可能會造成死鎖,死鎖發生在兩個執行緒相互持有對方正在等待的東西 實際是兩個執行緒共享的東西 只要有兩個執行緒和兩個物件就可能產生死鎖。乙個簡單的死...