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