20k月薪你應(yīng)該知道的

String厢呵、StringBuffer、StringBuilder

String 不可變字符序列秸妥,JDK1.0

StringBuffer 線程安全的可變字符序列,JDK1.0

StringBuilder 非線程安全的可變字符序列,JDK1.5

String是一個(gè)類手销,不是基本數(shù)據(jù)類型,String是值傳入碧信,非引用傳入。

StringBuffer和StringBuilder兩個(gè)很像街夭,在線程安全方面砰碴,StringBuffer允許多線程進(jìn)行字符操作,這是因?yàn)樵赟tringBuffer的很多方法都被關(guān)鍵字synnchronized修飾板丽,而StringBuilder沒有

StringBuilder的效率比StringBuffer稍高呈枉,如果不考慮線程安全,StringBuilder應(yīng)該是首選埃碱。另外猖辫,JVM運(yùn)行程序主要時(shí)間耗費(fèi)是在創(chuàng)建對(duì)象和回收對(duì)象上。

單線程運(yùn)行效率: String << StringBuffer < StringBuilder

非線程安全:StringBuilder

線程安全:StringBuffer

單線程最佳:StringBuilder

sleep和wait的區(qū)別

sleep是線程類Thread的方法砚殿,執(zhí)行此方法會(huì)導(dǎo)致當(dāng)前線程暫停指定時(shí)間啃憎,給其他線程執(zhí)行機(jī)會(huì),但是監(jiān)控狀態(tài)依然保持似炎,到時(shí)候會(huì)自動(dòng)恢復(fù)辛萍。調(diào)用sleep不會(huì)釋放對(duì)象鎖。sleep可以在任何地方使用羡藐。sleep必須捕獲異常贩毕。

wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖仆嗦,進(jìn)入等待此對(duì)象的等待鎖定池辉阶,只有針對(duì)次對(duì)象調(diào)用notify或者notifyAll方法后本線程才獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。使用wait的時(shí)候必須使用同步控制塊(synchronized)或者同步控制方法瘩扼。wait不用捕獲異常

抽象類和接口

抽象類:

  1. 抽象類可以有構(gòu)造方法
  1. 抽象類中可以存在普通屬性谆甜,方法,靜態(tài)屬性和方法
  2. 抽象類中可以存在抽象方法
  3. 如果一個(gè)類中有一個(gè)抽象方法集绰,那么當(dāng)前類一定是抽象類店印;抽象類中不一定有抽象方法
  4. 抽象類中的抽象方法,需要有子類實(shí)現(xiàn)倒慧,如果子類不識(shí)閑按摘,則子類也需要定義為抽象的

接口:

  1. 在接口中只有方法的生命包券,沒有方法體
  1. 在接口中只有常量,因?yàn)槎x的變量炫贤,在編譯的時(shí)候都會(huì)默認(rèn)加上public static final
  2. 接口中沒有構(gòu)造方法溅固,永遠(yuǎn)都被public來修飾
  3. 接口中沒有改造方法,也不能實(shí)例化接口的對(duì)象
  4. 接口可以實(shí)現(xiàn)多繼承
  5. 接口定義的方法都需要有實(shí)現(xiàn)類來實(shí)現(xiàn)兰珍,如果實(shí)現(xiàn)類不能實(shí)現(xiàn)接口中的多有方法則實(shí)現(xiàn)需要定義為抽象類

Java異常

Exception異常:是程序本身可以處理的異常
Error錯(cuò)誤:是程序無法處理的錯(cuò)誤侍郭,這些錯(cuò)誤表示故障發(fā)生于虛擬機(jī)自身,或者發(fā)生在虛擬機(jī)試圖執(zhí)行應(yīng)用時(shí)掠河,一般不需要程序處理

檢查異常(編譯器要求必須處置的異常):除了Error亮元,RuntimeException及其子類以外,其他的Exception類及其子類都屬于檢查異常唠摹,這種異常的特點(diǎn)是Java編譯器會(huì)檢查它爆捞,也就是說,當(dāng)程序中可能出現(xiàn)這類異常勾拉,要么用try-catch語句進(jìn)行捕獲煮甥,要么用throws子句拋出,否則編譯不過

非檢查異常(編譯器不要求處置的異常):包括運(yùn)行時(shí)異常(RuntimeException及其子類)和錯(cuò)誤(Error)

java類的成員初始化順序和初始化塊知識(shí)

屬性藕赞、方法成肘、構(gòu)造方法和自由塊都是類中的成員,在創(chuàng)建類的對(duì)象時(shí)斧蜕,類中各成員的執(zhí)行順序:

  1. 父類靜態(tài)成員和靜態(tài)初始化快双霍,按在代碼中出現(xiàn)的順序依次執(zhí)行。
  1. 子類靜態(tài)成員和靜態(tài)初始化塊批销,按在代碼中出現(xiàn)的順序依次執(zhí)行洒闸。
  2. 父類的實(shí)例成員和實(shí)例初始化塊,按在代碼中出現(xiàn)的順序依次執(zhí)行风钻。
  3. 執(zhí)行父類的構(gòu)造方法。
  4. 子類實(shí)例成員和實(shí)例初始化塊酒请,按在代碼中出現(xiàn)的順序依次執(zhí)行骡技。
  5. 執(zhí)行子類的構(gòu)造方法。

Java鎖

Java中的鎖作為并發(fā)共享數(shù)據(jù)羞反,保證一致性的工具布朦,在java平臺(tái)有多種實(shí)現(xiàn)。

  1. 自旋鎖 ,自旋昼窗,jvm默認(rèn)是10次吧是趴,有jvm自己控制。for去爭取鎖
  1. 阻塞鎖 被阻塞的線程澄惊,不會(huì)爭奪鎖唆途。
  2. 可重入鎖 多次進(jìn)入改鎖的域
  3. 讀寫鎖
  4. 互斥鎖 鎖本身就是互斥的
  5. 悲觀鎖 不相信富雅,這里會(huì)是安全的,必須全部上鎖
  6. 樂觀鎖 相信肛搬,這里是安全的没佑。
  7. 公平鎖 有優(yōu)先級(jí)的鎖
  8. 非公平鎖 無優(yōu)先級(jí)的鎖
  9. 偏向鎖 無競爭不鎖,有競爭掛起温赔,轉(zhuǎn)為輕量鎖
  10. 對(duì)象鎖 鎖住對(duì)象
  11. 線程鎖
  12. 鎖粗化 多鎖變成一個(gè)蛤奢,自己處理
  13. 輕量級(jí)鎖 CAS 實(shí)現(xiàn)
  14. 鎖消除 偏向鎖就是鎖消除的一種
  15. 鎖膨脹 jvm實(shí)現(xiàn),鎖粗化
  16. 信號(hào)量 使用阻塞鎖 實(shí)現(xiàn)的一種策略
  17. 排它鎖:X鎖陶贼,若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖啤贩,則只允許T讀取和修改A,其他任何事務(wù)都不能再對(duì)A加任何類型的鎖拜秧,直到T釋放A上的鎖痹屹。這就保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。

產(chǎn)生死鎖的主要原因

  1. 因?yàn)橄到y(tǒng)資源不足
  1. 進(jìn)程運(yùn)行推進(jìn)的順序不合適
  2. 資源分配不當(dāng)

如果系統(tǒng)資源充足腹纳,進(jìn)程的資源請(qǐng)求都能夠得到滿足痢掠,出現(xiàn)死鎖的可能性很低,否則就會(huì)因?yàn)闋帄Z優(yōu)先的資源而陷入死鎖嘲恍。進(jìn)程運(yùn)行推進(jìn)順序與速度不同足画,也可能產(chǎn)生死鎖

產(chǎn)生死鎖的4個(gè)必要條件

  1. 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用
  1. 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放
  2. 不剝奪條件:進(jìn)程已獲得的資源佃牛,在未使用完之前淹辞,不能強(qiáng)行剝奪
  3. 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾詳解的循環(huán)等待資源關(guān)系
    上面是產(chǎn)生死鎖的4個(gè)條件,只要系統(tǒng)發(fā)生死鎖俘侠,這些條件必然成立象缀,只要上述條件之一不滿足,就不會(huì)產(chǎn)生死鎖

死鎖的解除與預(yù)防

理解了產(chǎn)生死鎖的原因和產(chǎn)生死鎖的四個(gè)必要條件爷速,就可以最大可能的避免央星,預(yù)防和接觸死鎖。
在系統(tǒng)設(shè)計(jì)惫东,進(jìn)程調(diào)度等方面注意如何不讓產(chǎn)生死鎖的4個(gè)必要條件成立莉给,如何確定資源的合理分配算法,避免進(jìn)程永久占據(jù)系統(tǒng)資源廉沮。此外颓遏,也要防止進(jìn)程在處于等待狀態(tài)的情況下占用資源。因此滞时,對(duì)資源的的分配要給予合理的規(guī)劃叁幢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市坪稽,隨后出現(xiàn)的幾起案子曼玩,更是在濱河造成了極大的恐慌鳞骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件演训,死亡現(xiàn)場離奇詭異弟孟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)样悟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門拂募,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窟她,你說我怎么就攤上這事陈症。” “怎么了震糖?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵录肯,是天一觀的道長。 經(jīng)常有香客問我吊说,道長论咏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任颁井,我火速辦了婚禮厅贪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雅宾。我一直安慰自己养涮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布眉抬。 她就那樣靜靜地躺著贯吓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜀变。 梳的紋絲不亂的頭發(fā)上悄谐,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音库北,去河邊找鬼爬舰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贤惯,可吹牛的內(nèi)容都是我干的洼专。 我是一名探鬼主播棒掠,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孵构,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烟很?” 一聲冷哼從身側(cè)響起颈墅,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蜡镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后恤筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體官还,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年毒坛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了望伦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煎殷,死狀恐怖屯伞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豪直,我是刑警寧澤劣摇,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站弓乙,受9級(jí)特大地震影響末融,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暇韧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一勾习、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锨咙,春花似錦语卤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骂倘,卻和暖如春眼滤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背历涝。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工诅需, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荧库。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓堰塌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親分衫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子场刑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 集合框架: 1)特點(diǎn):存儲(chǔ)對(duì)象;長度可變蚪战;存儲(chǔ)對(duì)象的類型可不同2)Collection(1)List:有序的牵现;元素...
    Demo_Yang閱讀 1,260評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法铐懊,類相關(guān)的語法,內(nèi)部類的語法瞎疼,繼承相關(guān)的語法科乎,異常的語法,線程的語...
    子非魚_t_閱讀 31,630評(píng)論 18 399
  • (一)Java部分 1贼急、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,104評(píng)論 0 62
  • 不知不覺間茅茂,來北京已經(jīng)快三個(gè)月了,說實(shí)話太抓,相比于待了兩年多的深圳玉吁,這邊的日子過得并不見得比之前好多少。深圳過于安...
    落寒殘雪閱讀 268評(píng)論 0 0
  • 今天在逛知乎的時(shí)候突然想起去看一下英語學(xué)習(xí)的一些經(jīng)驗(yàn)帖子腻异,然后在看著看著的時(shí)候进副,突然想起前些天在逛的時(shí)候下載的那本...
    蕭牧寒閱讀 574評(píng)論 0 1