執行緒死鎖小demo

2021-10-24 17:11:15 字數 913 閱讀 8505

死鎖就是:

a執行緒 使用a鎖 然後在使用b鎖

b執行緒 使用b鎖 然後在使用a鎖

要是a執行緒執行到a鎖的時候  想要呼叫b鎖,而這時b執行緒執行b鎖之後想要呼叫a鎖,因為相互的鎖都有在用,這就導致了相互等待鎖用完的情況,然後因為鎖又各自在用,是用不完的,這就導致了死鎖。以下是**示例:

主線程呼叫 testss方法

private void testss()

class mycounter

public void add() }}

public void dec() }}

}class athread extends thread

@override

public void run() catch (interruptedexception e)

c.dec();

system.out.println("athread:" + c.m);

system.out.println("athread:" + c.n);

n--;

// }

}}class bthread extends thread

@override

public void run() catch (interruptedexception e)

c.add();

system.out.println("bthread:" + c.m);

system.out.println("bthread:" + c.n);

n--;

// }}}

執行結果:

執行緒join方法 小demo

1.第乙個示例 1 package cn.threaddemo 23 public class t implements runnable 14 1516 public static void main string args throws exception 2324 輸出結果 主線程中的a 0 ...

多執行緒死鎖除錯小技巧

據說再高的高手在寫多執行緒程式的時候都難確保不會產生死鎖,死鎖的除錯也就成為乙個比較常見的問題,假設有下面這樣乙個問題 乙個正在生產環境下執行的程序死鎖了,或者你只是在跑乙個程式,並沒有在偵錯程式裡面開啟它,然後發現沒有響應,日誌輸出也停止了。由於你是乙個有經驗的程式設計師,會想到 我剛剛加上了新的...

多執行緒死鎖除錯小技巧

據說再高的高手在寫多執行緒程式的時候都難確保不會產生死鎖,死鎖的除錯也就成為乙個比較常見的問題,假設有下面這樣乙個問題 乙個正在生產環境下執行的程序死鎖了,或者你只是在跑乙個程式,並沒有在偵錯程式裡面開啟它,然後發現沒有響應,日誌輸出也停止了。由於你是乙個有經驗的程式設計師,會想到 我剛剛加上了新的...