這個視頻我看了2遍了,我確信我都弄懂了知識,首先非常感謝悟空大大,但是我覺得你這個第6種情況的實例不妥,因為您測試的是多線程的靜態(tài)鎖方法和非靜態(tài)鎖方法,而您這個地方用的是一個對象測試的,體現(xiàn)不出來多線程訪問靜態(tài)鎖方法和非靜態(tài)鎖方法的不同之處,我覺得應該用兩個對象來測試,我寫了一段代碼來測試,不論是否合理,這都是我的想法,請悟空大大評價,我都會采納建議
2019-01-09
在線程訪問第一個上鎖的方法的時候,線程拿到了這把鎖,同時其他線程陷入阻塞狀態(tài)在等待,第一個獲得鎖的線程繼續(xù)訪問第二個上鎖的方法,但這個時候,第二個上鎖的方法是在第一個上鎖方法的內(nèi)部的,所以這個線程無法釋放第一把鎖,也就無法拿到第二個方法的鎖,所以,此線程陷入了一種既無法釋放鎖也無法拿到鎖的狀態(tài),這應該就是死鎖了,于此同時其他線程也只能干等著,但是那個線程也很無奈啊,放不下也拿不起,都干等著,我都著急,于是我直接長按電源鍵,哈哈,這是我的理解
2019-01-09
可以這樣理解,因為靜態(tài)方法屬于類,當多個線程訪問的這個靜態(tài)方法的時候,相當于數(shù)據(jù)共享了,所以當給這個方法上鎖之后,肯定是不能同時訪問的,而不加static的話,就是多個線程自己執(zhí)行自己的方法,cpu隨機的,就算加了鎖也沒什么卵用。除非這個Runable子類被其他線程共享,這也是數(shù)據(jù)共享了
2019-01-08