之前的理解死鎖出錯(cuò)了,原來有兩個(gè)方法。當(dāng)?shù)谝粋€(gè)方法被第一個(gè)線程訪問的時(shí)候,第一個(gè)鎖對象就被占有了,第二個(gè)線程去訪問方法二,第二個(gè)鎖對象就被線程二占有了。此時(shí)第一個(gè)線程訪問第一個(gè)方法內(nèi)部的同步塊的時(shí)候,要獲取第二個(gè)鎖對象,可此時(shí)第二個(gè)對象被線程2占有了,線程1也就無法獲取到第二個(gè)鎖對象,而線程2也要訪問第二個(gè)方法內(nèi)部的同步塊需要獲取鎖對象1,而此時(shí)鎖對象1被線程1占有,所以,此時(shí)兩個(gè)線程都無法繼續(xù)下去,就一直耗著,造成死鎖。這是我復(fù)盤的時(shí)候檢測出的問題,希望大家在學(xué)習(xí)的時(shí)候多看實(shí)例,避免出錯(cuò)
2019-01-12
這個(gè)視頻我看了2遍了,我確信我都弄懂了知識,首先非常感謝悟空大大,但是我覺得你這個(gè)第6種情況的實(shí)例不妥,因?yàn)槟鷾y試的是多線程的靜態(tài)鎖方法和非靜態(tài)鎖方法,而您這個(gè)地方用的是一個(gè)對象測試的,體現(xiàn)不出來多線程訪問靜態(tài)鎖方法和非靜態(tài)鎖方法的不同之處,我覺得應(yīng)該用兩個(gè)對象來測試,我寫了一段代碼來測試,不論是否合理,這都是我的想法,請悟空大大評價(jià),我都會采納建議
2019-01-09