Effective Java(二)

我將文章拆成了兩部分季二,繼續(xù)來(lái)寫(xiě)Effective Java中的內(nèi)容。


有效的檢驗(yàn)參數(shù),如果參數(shù)調(diào)用錯(cuò)誤琳疏,則拋出異常粪般,常用的異常包括:

IllegalArgumentException / IndexOutofBoundsException / NullPointException


避免參數(shù)過(guò)多拼余,可以通過(guò)檢查輔助類(lèi),可以配合builder模式使用亩歹。


在Java中匙监,程序是靜態(tài)多分派,動(dòng)態(tài)單分派的小作。

能夠重載不意味著應(yīng)該重載亭姥。


可變參數(shù)的設(shè)計(jì),應(yīng)該至少保證有一個(gè)參數(shù)顾稀,應(yīng)該不傳參數(shù)會(huì)導(dǎo)致程序報(bào)錯(cuò)达罗。


函數(shù)的返回值不應(yīng)該是null,返回零長(zhǎng)度的數(shù)組或者集合静秆。


使程序局部變量作用域最小化粮揉,不要過(guò)早聲明巡李。


基本類(lèi)型優(yōu)于裝箱基本類(lèi)型,裝箱類(lèi)型的非功能值null會(huì)增加很多編程心智負(fù)擔(dān)滔蝉,在集合類(lèi)中應(yīng)該使用裝箱類(lèi)型击儡。


StringBuilder連接字符串優(yōu)于字符串拼接,優(yōu)于StringBuffer.


通過(guò)接口引用對(duì)象蝠引,使用接口類(lèi)型作為參數(shù)阳谍,可以讓程序更加靈活。


盡可能的避免使用反射螃概,反射的問(wèn)題:

1. 喪失了編譯時(shí)的類(lèi)型檢查矫夯。

2. 執(zhí)行反射的代碼冗長(zhǎng)。

3. 反射性能較差吊洼。


不要將異常用于控制流训貌,對(duì)可恢復(fù)的情況使用受檢異常,避免不必要的受檢異常冒窍,例如null

雖然Java支持異常鏈轉(zhuǎn)譯递沪,但是低層和高層還是應(yīng)該可能的隔離開(kāi),如果低層能處理掉那么自己處理掉異常综液。


并發(fā)

synchronized可以保證在同一時(shí)刻款慨,只有一個(gè)線程可以執(zhí)行某一個(gè)方法或者代碼塊。

volatile不執(zhí)行互斥訪問(wèn)谬莹,但是可以保證每一個(gè)線程在讀取該域獲取的都是最新的值檩奠。

增量操作符++不是原子的,首先讀取舊值附帽,然后寫(xiě)回新值埠戳,在這個(gè)過(guò)程中間可能會(huì)出現(xiàn)問(wèn)題,需要借助synchronized同步蕉扮。


synchronized可能會(huì)造成死鎖整胃,要盡量限制內(nèi)部區(qū)域內(nèi)部的工作量。


線程池Executor

ExecutorSerivce executor= Executors.newSingleThreadExecutor();

executor.execute(runnable);

executor.shudown();


同步器 Synchronizer是一些使線程能夠等待另一個(gè)線程的對(duì)象慢显,允許他們協(xié)調(diào)工作

常用的有:CountDownLatch和Semaphore

不常用的有:CyclicBarrier和Exchanger

倒計(jì)數(shù)鎖存器是一次性障礙CountDownLatch爪模,一個(gè)使用場(chǎng)景就是Spring異步初始化,加快啟動(dòng)速度荚藻。


線程安全的級(jí)別:

1. 不可變的屋灌,不需要同步。

2. 無(wú)條件的線程安全应狱,這個(gè)類(lèi)有內(nèi)部同步共郭,可以無(wú)條件的被并發(fā)使用。

3. 有條件的線程安全,例如Collections.synchronized包裝返回的集合除嘹,它們的迭代器需要外部同步写半。

4. 非線程安全,比如ArrayList和HashMap尉咕,需要自己外部同步叠蝇。

5. 線程對(duì)立的,外部同步也不能保證線程安全年缎。


延遲初始化:

對(duì)于實(shí)例域悔捶,使用雙重檢查模式

對(duì)于靜態(tài)域,使用lazy initalization holder class idiom

對(duì)于可以接受重復(fù)初始化的實(shí)例域单芜,可以考慮單重檢查模式


這里一些內(nèi)容寫(xiě)的太粗蜕该,需要細(xì)化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洲鸠,一起剝皮案震驚了整個(gè)濱河市堂淡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扒腕,老刑警劉巖绢淀,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瘾腰,居然都是意外死亡更啄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)居灯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人内狗,你說(shuō)我怎么就攤上這事怪嫌。” “怎么了柳沙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵岩灭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赂鲤,道長(zhǎng)噪径,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任数初,我火速辦了婚禮找爱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泡孩。我一直安慰自己车摄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著吮播,像睡著了一般变屁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上意狠,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天粟关,我揣著相機(jī)與錄音,去河邊找鬼环戈。 笑死闷板,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谷市。 我是一名探鬼主播蛔垢,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迫悠!你這毒婦竟也來(lái)了鹏漆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤创泄,失蹤者是張志新(化名)和其女友劉穎艺玲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鞠抑,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饭聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搁拙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秒梳。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖箕速,靈堂內(nèi)的尸體忽然破棺而出酪碘,到底是詐尸還是另有隱情,我是刑警寧澤盐茎,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布兴垦,位于F島的核電站,受9級(jí)特大地震影響字柠,放射性物質(zhì)發(fā)生泄漏探越。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一窑业、第九天 我趴在偏房一處隱蔽的房頂上張望钦幔。 院中可真熱鬧,春花似錦常柄、人聲如沸节槐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铜异。三九已至哥倔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揍庄,已是汗流浹背咆蒿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚂子,地道東北人沃测。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像食茎,于是被迫代替她去往敵國(guó)和親蒂破。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容