奧迪q7死鎖怎么解
*推薦閱讀*
*國內(nèi)Java面試總問StringBuffer?為什么等級這么低?
*Java面試,怎么等offer?
*秋季招聘Java崗:最全BAT面試問題排序
鎖的定義:死鎖(Deadlock)是指兩個或兩個以上的進(jìn)程在執(zhí)行過程中爭奪資源或互相通信而導(dǎo)致的阻塞現(xiàn)象。沒有外力,他們將無法前進(jìn)。競爭的資源可以是:鎖、網(wǎng)絡(luò)連接、磁盤共享變量等等,可以稱為“資源”。
我們使用鎖來保證線程安全,但是使用不當(dāng)和濫用可能會導(dǎo)致死鎖。并發(fā)程序一旦死鎖,一般沒有什么好辦法,很多情況下只能重啟。所以我們必須避免僵局。
01 簡單例子
舉一個不恰當(dāng)?shù)睦?現(xiàn)在岳不群通過陰謀獲得了《向日葵》一書的第一卷,然后他就閉門在自己的宮殿里修行。此刻,他想繼續(xù)爭奪第二卷來練習(xí),否則就白忙了。這時,第二卷被林平之拿到了,他也想練習(xí)葵花寶典,于是他把第二卷藏起來,從宮里找到了第一卷。現(xiàn)在的問題是岳不群找不到第二卷。如果林平之拿不到第一卷,兩個人只能看在面子上,誰也不會交出自己的。同事之間要互相拿。
此時,如果有一個線程A,將按照先獲取鎖A再獲取鎖B的順序獲取鎖,而另一個線程B將按照先獲取鎖B再獲取鎖A的順序獲取鎖,如下圖所示:實際上,線程A是岳不群,線程B是林平之,《葵花寶典》的上下卷分別是lock A和lock B。
然后我們用代碼模擬在線執(zhí)行過程,默認(rèn)使用SpringBoot環(huán)境。
@Componentpublic class DeadLock { private static Object lockA = new Object(); private static Object lockB = new Object(); public void deadLock() { Thread threadA = new Thread(() -
>>點擊查看今日優(yōu)惠<<
-
1搭載2.0T發(fā)動機(jī),有望12月上市 長安CS75 PLUS Ultra官圖發(fā)布
- 2限時售9.99萬起 奇瑞風(fēng)云A8L上市 1.5T插混/續(xù)航超2100km
- 3對標(biāo)理想的中型SUV? 捷途山海L8諜照曝光
- 4全新車頭設(shè)計? 新款吉利銀河L7諜照曝光
- 5售6.98萬起 吉利星愿上市65天交付量突破40000臺
- 6不打價格戰(zhàn) 保時捷中國CEO表示2026年要贏回中國市場
- 7純電復(fù)古大玩具 iCAR V23上市 售9.98萬元起
相關(guān)閱讀點擊加載更多 - 2限時售9.99萬起 奇瑞風(fēng)云A8L上市 1.5T插混/續(xù)航超2100km