面向?qū)ο蟮娜齻€特征:繼承 封裝和多態(tài)
- 繼承:可以使用現(xiàn)有類已有的所有方法奸鬓,無需重新編寫即可對現(xiàn)有類進* 行擴展〉Ф粒可以通過繼承和組合來實現(xiàn)
- 封裝:向外提供接口串远,隱藏了內(nèi)部的具體實現(xiàn)
- 多態(tài):同一消息可以根據(jù)發(fā)送對象的不同采用不同的行為方式
多線程
死鎖的四個必要條件:
從以上分析可見,如果在計算機系統(tǒng)中同時具備下面四個必要條件時儿惫,那麼會發(fā)生死鎖澡罚。換句話說,只要下面四個條件有一個不具備姥闪,系統(tǒng)就不會出現(xiàn)死鎖。
互斥條件砌烁。即某個資源在一段時間內(nèi)只能由一個進程占有筐喳,不能同時被兩個或兩個以上的進程占有。這種獨占資源如CD-ROM驅(qū)動器函喉,打印機等等避归,必須在占有該資源的進程主動釋放它之后,其它進程才能占有該資源管呵。這是由資源本身的屬性所決定的梳毙。如獨木橋就是一種獨占資源,兩方的人不能同時過橋捐下。
不可搶占條件账锹。進程所獲得的資源在未使用完畢之前,資源申請者不能強行地從資源占有者手中奪取資源坷襟,而只能由該資源的占有者進程自行釋放奸柬。如過獨木橋的人不能強迫對方后退,也不能非法地將對方推下橋婴程,必須是橋上的人自己過橋后空出橋面(即主動釋放占有資源)廓奕,對方的人才能過橋。
占有且申請條件。進程至少已經(jīng)占有一個資源桌粉,但又申請新的資源蒸绩;由于該資源已被另外進程占有,此時該進程阻塞铃肯;但是患亿,它在等待新資源之時,仍繼續(xù)占用已占有的資源缘薛。還以過獨木橋為例窍育,甲乙兩人在橋上相遇。甲走過一段橋面(即占有了一些資源)宴胧,還需要走其余的橋面(申請新的資源)漱抓,但那部分橋面被乙占有(乙走過一段橋面)。甲過不去恕齐,前進不能乞娄,又不后退;乙也處于同樣的狀況显歧。
循環(huán)等待條件仪或。存在一個進程等待序列{P1,P2士骤,...范删,Pn},其中P1等待P2所占有的某一資源拷肌,P2等待P3所占有的某一源到旦,......,而Pn等待P1所占有的的某一資源巨缘,形成一個進程循環(huán)等待環(huán)添忘。就像前面的過獨木橋問題,甲等待乙占有的橋面若锁,而乙又等待甲占有的橋面搁骑,從而彼此循環(huán)等待。
上面我們提到的這四個條件在死鎖時會同時發(fā)生又固。也就是說仲器,只要有一個必要條件不滿足,則死鎖就可以排除仰冠。
來自:http://blog.csdn.net/hijiankang/article/details/9157365
不要調(diào)用Thread類或Runnable對象的run方法娄周。直接調(diào)用run方法只會在當前線程中執(zhí)行任務(wù),并不會啟動新的線程沪停,正確的做法是調(diào)用Thread.start方法煤辨,它會創(chuàng)建一個新的線程來執(zhí)行run方法
final關(guān)鍵字:
向編譯器告知一塊數(shù)據(jù)是恒定不變的(一個永不改變的編譯期常量)
在對這個常量進行定義的時候裳涛,必須對其進行賦值
final方法:使用final方法的原因有兩個,第一個是把方法鎖定众辨,以防止任何繼承類修改它的含義端三。
第二個原因是效率
類中的所有private方法都是被隱式被指定為final的
final類
當將某個類的整體定義為final時,就表明了你不打算繼承該類鹃彻,也不允許別人這樣做郊闯。
this關(guān)鍵字:
public class BananaPeel{
public static void main(String[] args)
Banana a = new Banana();
Banana b = new Banana();
a.peel(1);
}
編譯器做了一些幕后工作,他暗自把“所操作的對象的引用”作為第一個參數(shù)傳遞給peel()蛛株。所以上述兩個方法調(diào)用就變成了這樣:
Banana.peel(a,1);
Banana.peel(b,2);
這是內(nèi)部的表示形式团赁,我們并不能這樣書寫代碼,并嘗試通過編譯谨履。
- this關(guān)鍵字只能在方法的內(nèi)部使用欢摄,表示對“調(diào)用方法的那個對象”的引用
- 在構(gòu)造器中,如果為this添加了參數(shù)列表笋粟,那么久有了不同的含義怀挠,這將對符合此參數(shù)列表的某個構(gòu)造器明確調(diào)用,這樣害捕,調(diào)用其它構(gòu)造器就有了直接的途徑绿淋。但是this只能用于調(diào)用一個構(gòu)造器,不能調(diào)用兩個尝盼,并且用this關(guān)鍵字調(diào)用構(gòu)造器時吞滞,必須將構(gòu)造器調(diào)用置于最起始位置,否則會報錯
static 方法就是沒有this的方法盾沫,在static方法的內(nèi)部不能調(diào)用非靜態(tài)方法裁赠,反過來可以