Java多執行緒死鎖模型

2021-06-28 22:32:13 字數 900 閱讀 7154

要素:兩個執行緒、兩把鎖、兩組巢狀的同步**塊。

下面就用買賣場景來模擬線程死鎖。

package com.zzj.thread;

/** * 執行緒死鎖

* *@author administrator

* */

public

class

deaththread

}/**

* 買者

* *@author administrator

* */

class money implements runnable

@override

public

void

run() catch (interruptedexception e)

system.out.println("買者說:先給貨,再交錢!");

synchronized (goods) }}

}/**

* 賣者

* *@author administrator

* */

class goods implements runnable

@override

public

void

run() catch (interruptedexception e)

system.out.println("賣者說:先交錢,再給貨!");

synchronized (money) }}

}

輸出結果:

買者思索中...

...賣者思索中...

...買者說:先給貨,再交錢!

賣者說:先交錢,再給貨!

結果是買者拿不到貨,賣者也拿不到錢。

Java多執行緒 死鎖

死鎖 不同的執行緒分別占用對方需要的同步資源不放棄,都在等待對方放棄自己的需要的同步資源,就形成了執行緒的死鎖 解決方法 1.專門的演算法 原則 2.儘量減少同步資源的定義 此處插入testdeadlock 死鎖問題,處理執行緒同步時容易出現 public class testdeadlock ca...

Java 多執行緒死鎖

概念 所謂死鎖是指兩個或兩個以上的程序在執行過程中,因爭奪同一資源而造成的一種互相等待的現象,若無外力作用,它們都將無法進行下去,此時稱系統處於死鎖狀態或系統產生了死鎖,class k extends thread public void run else catch interruptedexce...

Java多執行緒 執行緒死鎖

發生死鎖的原因通常是兩個物件的鎖相互等待造成的。以下用乙個例項來構造這樣的情況 package basic.e deadlock import org.apache.log4j.logger public class testdeadlock class mythread extends threa...