Java 46 基於Java的多執行緒死鎖例子

2021-09-10 06:51:56 字數 766 閱讀 2079

2個人一起吃飯但是只有一雙筷子,2人輪流吃(同時擁有2只筷子才能吃)。某乙個時候,乙個拿了左筷子,一人拿了右筷子,2個人都同時占用乙個資源,等待另乙個資源,這個時候甲在等待乙吃完並釋放它占有的筷子,同理,乙也在等待甲吃完並釋放它占有的筷子,這樣就陷入了乙個死迴圈,誰也無法繼續吃飯

產生死鎖原因是對同乙份資源不同部分進行操作,而不同部分又加了鎖,故導致死鎖

/** 

* 乙個簡單的死鎖類

* 當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)

}

基於Java的快速排序

快速排序 基本思想 快速排序就是通過將乙個陣列分為兩個子陣列,然後通過遞迴呼叫自身為每乙個字陣列進行快速排序實現 通常劃分關鍵字 基準元素 的標準 第乙個元素或者最後乙個元素 author wanglong 2016 9 24 下午2 18 29 public class quicksort els...

基於java的websocket實現

基於tomcat的websocket實現中,如果會針對乙個使用者高頻的傳送訊息的情況下,websocket自帶的非同步傳送其實一點卵用都沒有,所以,沒辦法,自己控制websocket的併發傳送嘍,不多說,直接貼 1.基礎的websocket快取物件,這個玩意兒每乙個使用者進來都會生成乙個 publi...

基於java的快速排序

因為上次面試師兄讓我上機寫個快排的演算法,我沒有寫出來,很尷尬,今天把快排實現了一遍,以後遇到就不會掉這個坑了。package testt public class fastsort int start 0 int end a.length 1 sort a,start,end for int i ...