多執行緒死鎖

2021-10-01 13:18:37 字數 918 閱讀 4688

多執行緒死鎖是什麼?

就是同步中巢狀同步,無法釋放鎖,導致程式一直等待

下面就是**,我們模擬一段死鎖現象

package com.newdemo.controller.test;

class

traindemo14

implements

runnable}}

else}}

public synchronized void

sale()

catch

(exception e)

system.out.

println

(thread.

currentthread()

.getname()

+",**第"+(

100- counttrain +1)

+"票");

counttrain--;}

}}}public

class

threaddemo13

}

執行結果如下:

就是程式會一直卡著不動,然後占用cpu資源。這個**不會正常執行了。

分析我們的**中,有兩個執行緒,執行緒1和執行緒2.

執行緒1:會先拿到同步**塊中的oj鎖,再拿到同步函式的this鎖

執行緒2:會先拿到同步函式的this鎖,再拿到同步**塊中的oj鎖

重點:執行緒1拿到oj鎖,執行緒2拿到this鎖,執行緒1接下來需要執行緒2的this鎖,執行緒2接下來需要執行緒1的oj鎖,2個執行緒相互需要鎖,但是都不釋放,你不給我我沒辦法進去,我不給你你沒辦法進去,就會產生死鎖。互相不釋放鎖資源

多執行緒死鎖

這段時間剛好學到多執行緒,下面是自己對死鎖的一些感悟,並不是我說的有多到位,只是想到一種更為通俗易懂理解方式,現在和大家一起分享一下,有改進的地方,希望大家多提提意見。一 首先說一下死鎖的定義 由兩個或兩個以上的執行緒由於互相競爭資源,導致一種互相等待的狀態,如果沒有外力推動,則他們都無法進行下去。...

多執行緒死鎖

1 提出 多執行緒與多程序提高了系統資源的利用率,然而併發執行也會帶來一些問題,如死鎖。2 概念 死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖...

多執行緒死鎖

演示一種死鎖的現象 實現如圖所示的死鎖 public classdeadlockimplementsrunnable else count 解釋 死鎖 cpu程序排程是隨機的,執行緒a執行,列印了幾遍if else,這中間,count為奇數,而且執行緒2搶奪了cpu 資源進入else,而此時如果缺少...