JAVA編程學(xué)習(xí)筆記瓣戚,多線程面試題整理

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java 技術(shù)具有卓越的通用性焦读、高效性子库、平臺移植性和安全性,廣泛應(yīng)用于PC矗晃、數(shù)據(jù)中心仑嗅、游戲控制臺、科學(xué)超級計(jì)算機(jī)张症、移動電話和互聯(lián)網(wǎng)仓技,同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。

給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

多線程有幾種實(shí)現(xiàn)方案俗他,分別是哪幾種???

三種脖捻。

繼承Thread類

實(shí)現(xiàn)Runnable接口:Java不支持類的多重繼承,但允許你調(diào)用多個(gè)接口兆衅。所以如果你要繼承其他類地沮,當(dāng)然是調(diào)用Runnable接口好了。

實(shí)現(xiàn)Callable接口羡亩。這個(gè)得和線程池結(jié)合摩疑。

線程與進(jìn)程的區(qū)別???

線程是進(jìn)程的子集,一個(gè)進(jìn)程可以有很多線程畏铆,每條線程并行執(zhí)行不同的任務(wù)雷袋。

不同的進(jìn)程使用不同的內(nèi)存空間,而所有的線程共享一片相同的內(nèi)存空間及志。別把它和棧內(nèi)存搞混片排,每個(gè)線程都擁有單獨(dú)的棧內(nèi)存用來存儲本地?cái)?shù)據(jù)

什么是線程池? 為什么要使用它???

創(chuàng)建線程要花費(fèi)昂貴的資源和時(shí)間速侈,如果任務(wù)來了才創(chuàng)建線程那么響應(yīng)時(shí)間會變長率寡,而且一個(gè)進(jìn)程能創(chuàng)建的線程數(shù)有限。為了避免這些問題倚搬,在程序啟動的時(shí)候就創(chuàng)建若干線程來響應(yīng)處理冶共,它們被稱為線程池,里面的線程叫工作線程。從JDK1.5開始捅僵,Java API提供了Executor框架讓你可以創(chuàng)建不同的線程池家卖。比如單線程池,每次處理一個(gè)任務(wù)庙楚;數(shù)目固定的線程池或者是緩存線程池(一個(gè)適合很多生存期短的任務(wù)的程序的可擴(kuò)展線程池)上荡。

同步有幾種方式,分別是什么???

兩種馒闷。

同步代碼塊

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零酪捡,五五四,六零七 】纳账,無論你是大牛還是小白逛薇,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具疏虫,很多干貨和技術(shù)資料分享永罚!

同步代碼塊

同步方法:

同步方法

啟動一個(gè)線程是run()還是start()?它們的區(qū)別???

啟動線程用?start();

run():?封裝了被線程執(zhí)行的代碼,直接調(diào)用僅僅是普通方法的調(diào)用

start():?啟動線程,并由JVM自動調(diào)用run()方法

:start()方法被用來啟動新創(chuàng)建的線程卧秘,而且start()內(nèi)部調(diào)用了run()方法呢袱,這和直接調(diào)用run()方法的效果不一樣。當(dāng)你調(diào)用run()方法的時(shí)候翅敌,只會是在原來的線程中調(diào)用产捞,沒有新的線程啟動,start()方法才會啟動新線程哼御。

sleep()和wait()方法的區(qū)別???

sleep():?必須指時(shí)間; 不釋放鎖。

wait():?可以不指定時(shí)間焊唬,也可以指定時(shí)間; 釋放鎖恋昼。

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零,五五四赶促,六零七 】液肌,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)鸥滨!裙內(nèi)有開發(fā)工具嗦哆,很多干貨和技術(shù)資料分享!

區(qū)別比較

為什么wait(),notify(),notifyAll()等方法都定義在Object類中???

因?yàn)檫@些方法的調(diào)用是依賴于鎖對象的婿滓,而同步代碼塊的鎖對象是任意鎖老速。

而Object代碼任意的對象,所以凸主,定義在這里面橘券。

線程的生命周期???

新建(new):處于該狀態(tài)的時(shí)間很短暫。已被分配了必須的系統(tǒng)資源,并執(zhí)行了初始化旁舰。表示有資格獲得CPU時(shí)間锋华。調(diào)度器可以把該線程變?yōu)閞unnable或者blocked狀態(tài)

就緒(Runnable):這種狀態(tài)下只要調(diào)度器把時(shí)間片分配給線程,線程就能運(yùn)行箭窜。處在這種狀態(tài)就是可運(yùn)行可不運(yùn)行的狀態(tài)

阻塞(Bolocked):線程能夠運(yùn)行毯焕,但有個(gè)條件阻止它的運(yùn)行。當(dāng)線程處于阻塞狀態(tài)時(shí)磺樱,調(diào)度器將會忽略線程纳猫,不會分配給線程任何CPU時(shí)間(例如sleep)。只有重新進(jìn)入了就緒狀態(tài)坊罢,才有可能執(zhí)行操作续担。

死亡(Dead):處于死亡狀態(tài)的線程講不再是可調(diào)度的,并且再也不會得到CPU時(shí)間活孩。任務(wù)死亡的通常方式是從run()方法返回物遇。

一個(gè)任務(wù)進(jìn)入阻塞狀態(tài),可能有如下原因:

1.sleep

2.wait()憾儒,知道線程得到了notify()或者notifyAll()消息询兴,線程才會進(jìn)入就緒狀態(tài)。

3.任務(wù)在等待某個(gè)輸入/輸出完成

4.線程在試圖在某個(gè)對象上調(diào)用其同步控制方法起趾,但是對象鎖不可用诗舰,因?yàn)榱硪粋€(gè)任務(wù)已經(jīng)獲取了這個(gè)鎖。

線程生命周期圖解

如何避免死鎖???

Java多線程中的死鎖

死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中训裆,因爭奪資源而造成的一種互相等待的現(xiàn)象眶根,若無外力作用,它們都將無法推進(jìn)下去边琉。這是一個(gè)嚴(yán)重的問題属百,因?yàn)樗梨i會讓你的程序掛起無法完成任務(wù),死鎖的發(fā)生必須滿足以下四個(gè)條件:

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零变姨,五五四族扰,六零七 】,無論你是大牛還是小白定欧,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)渔呵!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享砍鸠!

死鎖發(fā)生的四個(gè)條件

避免死鎖最簡單的方法就是阻止循環(huán)等待條件扩氢,將系統(tǒng)中所有的資源設(shè)置標(biāo)志位、排序爷辱,規(guī)定所有的進(jìn)程申請資源必須以一定的順序(升序或降序)做操作來避免死鎖类茂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耍属,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巩检,更是在濱河造成了極大的恐慌厚骗,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兢哭,死亡現(xiàn)場離奇詭異领舰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迟螺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門冲秽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矩父,你說我怎么就攤上這事锉桑。” “怎么了窍株?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵民轴,是天一觀的道長。 經(jīng)常有香客問我球订,道長后裸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任冒滩,我火速辦了婚禮微驶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘开睡。我一直安慰自己因苹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布篇恒。 她就那樣靜靜地躺著容燕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婚度。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天官卡,我揣著相機(jī)與錄音蝗茁,去河邊找鬼。 笑死寻咒,一個(gè)胖子當(dāng)著我的面吹牛哮翘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毛秘,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼饭寺,長吁一口氣:“原來是場噩夢啊……” “哼阻课!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艰匙,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤限煞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后员凝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體署驻,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年健霹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旺上。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糖埋,死狀恐怖宣吱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞳别,我是刑警寧澤征候,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站洒试,受9級特大地震影響倍奢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垒棋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一卒煞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叼架,春花似錦畔裕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乍构,卻和暖如春甜无,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哥遮。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工岂丘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眠饮。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓奥帘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仪召。 傳聞我的和親對象是個(gè)殘疾皇子寨蹋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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

  • 下面是我自己收集整理的Java線程相關(guān)的面試題松蒜,可以用它來好好準(zhǔn)備面試。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 14,818評論 14 507
  • Java SE 基礎(chǔ): 封裝已旧、繼承秸苗、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務(wù))結(jié)合為一個(gè)獨(dú)立的整體,并盡...
    Jayden_Cao閱讀 2,108評論 0 8
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍(lán)閱讀 7,350評論 3 87
  • 從零三年评姨,自己抑郁癥和焦慮癥最嚴(yán)重的時(shí)候难述,一直到現(xiàn)在已經(jīng)快十五年了。 很多人會說吐句,人生能有多少個(gè)十五年胁后。我會把它看...
    溫九命閱讀 268評論 0 0
  • 2016.6.13 夜。堅(jiān)持跑步打球嗦枢、工作學(xué)習(xí)攀芯、寫記錄寫心情,開始新的人生文虏。 堅(jiān)持做一件困難的事情是很困難的侣诺。但只...
    嵐風(fēng)的葉子閱讀 120評論 0 0