其實對於死鎖,很多人會望而生畏。而事實上,死鎖的原理非常之簡單。死鎖的本質就是,a物件佔據了資源x,b也差不多同時占用了資源y。在x和y資源都沒有釋放的時候,a和b試圖申請資源y和x。於是a在等b釋放y,b在等a釋放x。更直白一點,乙個男人和女人相互暗戀,男人想要女的先示愛,他才向女的表白,女的想要男的先表白,她才向男的示愛。於是就一直等下去。相信有很多人對於多執行緒或者是資料庫操作一想到死鎖,就感到忐忑,生怕一不小心就會死鎖。其實也大可不必過於擔憂,從上面的解釋,死鎖產生的前提條件有:
1,同時性。
2,有兩個以上物件,可以理解為多個執行緒。
3,有兩個以上資源,也就是鎖。特別是第三點,對同乙個資源的操作,是不可能產生死鎖的。理解了死鎖的本質之後,再進行擴充套件,就很清晰了。例如多執行緒會產生死鎖,多個程序也可能產生死鎖。多個資料庫的會話也可能產生死鎖。集群中多個伺服器,也可能產生死鎖。但萬變不離其宗。
模擬建立普通異常,執行的結果是,catch裡面的**不會執行,也就是說主線程捕獲不了子執行緒的異常。因為這裡比較明顯看到了執行緒的建立。而在其它地方比較隱蔽,明明進行了try...catch,卻沒有捕獲到想要的異常。
public static void fun1()catch (exception e)
}
談談多執行緒
使用乙個東西之前,知道其為什麼會誕生,才能夠好的知道其有點或者好處,更有效地使用。要說執行緒的好處,必須要提到程序。程序的出現是通過犧牲了cpu時間和記憶體空間來換取能夠同時執行,或者叫模仿同時執行,也就是併發。那麼,執行緒呢?現成的誕生,是因為程序有缺陷,程序的缺陷是啥?剛剛我們說程序浪費了記憶體...
談談多執行緒程式設計
我只進行過win32下多執行緒程式的專案開發,類unix系統只是有過學習了解,所以有以偏概全的情況請大家指正 總結 不知道大家有沒有這種感覺,掌握多執行緒程式的編寫好像是高階windows開發人才的必備的一種技能。我的了解 類unix系統的的程序開銷比較小,彷彿用多程序開發居多 做了一下簡要統計,在...
菜鳥 也談談多執行緒
做開發快一年了,大部分都是有的dan執行緒,也從來沒有考慮去去多執行緒處理一些東西。今天突然 看到 petshop的多執行緒 就貼出來吧 static void main console.writeline processing started.press enter to stop.console...