并發(fā)要理解的進(jìn)程、線程戏溺、協(xié)程旷祸,附并發(fā)編程72道面試題答案

一讼昆、進(jìn)程

1.什么是進(jìn)程浸赫?

進(jìn)程是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本概念,可以說進(jìn)程是線程的容器,一個(gè)進(jìn)程里包括數(shù)據(jù)區(qū)域和堆棧存儲(chǔ)著活動(dòng)過程調(diào)用的指令和本地的變量羡榴,進(jìn)程沒運(yùn)行時(shí)候處于沒有生命的一個(gè)實(shí)體的狀態(tài)校仑,運(yùn)行時(shí)依賴處理器給他活體狀传惠,一個(gè)進(jìn)程至少有一個(gè)線程,如果沒有的話那么這個(gè)線程就是它本身羊瘩。

文末領(lǐng)取并發(fā)編程72道面試題及答案

一盼砍、多進(jìn)程的概念

理論上一個(gè)CPU只能給一個(gè)進(jìn)程浇坐,如果想一個(gè)CPU運(yùn)行多個(gè)進(jìn)程的話,那就是多進(jìn)程侧戴,就要使用并發(fā)技術(shù),實(shí)現(xiàn)并發(fā)技術(shù)非常復(fù)雜,說一下簡(jiǎn)單的并發(fā)技術(shù) "時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法" 在操作系統(tǒng)的管理下积仗,所有正在運(yùn)行的進(jìn)程輪流使用CPU寂曹,每個(gè)進(jìn)程允許占用CPU的時(shí)間非常短(比如10ms)回右,這樣用戶根本感覺不出來 CPU是在輪流為多個(gè)進(jìn)程服務(wù),但實(shí)際上在任何一個(gè)時(shí)間內(nèi)有且僅有一個(gè)進(jìn)程占有CPU翔烁。 如果一臺(tái)計(jì)算機(jī)有多個(gè)CPU渺氧,情況就不同了,如果進(jìn)程數(shù)大于CPU數(shù)的時(shí)候蹬屹,使用這種并發(fā)技術(shù)侣背。目前都是幾核的CPU都能夠處理。

同時(shí)慨默,這兩種上下文切換的處理都是通過操作系統(tǒng)內(nèi)核來完成的贩耐。內(nèi)核的這種切換過程伴隨的最顯著的性能損耗是將寄存器中的內(nèi)容切換出。

2.什么是線程厦取?

線程是程序執(zhí)行流的最小單元,一個(gè)線程的信息包括(線程ID潮太,指令集合,堆棧組)組成的線程這種單位,上面進(jìn)程提到進(jìn)程是線程的一個(gè)容器铡买,說明線程運(yùn)行在進(jìn)程里面的,那就是運(yùn)行在進(jìn)程里面的一個(gè)實(shí)體台谢,它不擁有系統(tǒng)資源寻狂,但它擁有進(jìn)程的資源。

一朋沮、線程的三種狀態(tài)

1.就緒狀態(tài):

是指線程具備運(yùn)行的所有條件蛇券,邏輯上可以運(yùn)行,在等待處理機(jī)的過程樊拓。

2.阻塞狀態(tài):

是指線程在等待某一個(gè)事件(信號(hào)量)纠亚。

3.運(yùn)行狀態(tài):

是指線程占有處理機(jī)正在運(yùn)行。

二筋夏、多線程

同時(shí)運(yùn)行多個(gè)線程完成不同的工作蒂胞,就叫做多線程,使用多線程的好處有:

1.資源利用率更好: 想象一下条篷,一個(gè)應(yīng)用程序需要從本地文件系統(tǒng)中讀取和處理文件的情景蛤织。比方說指蚜,從磁盤讀取一個(gè)文件需要5秒涨椒,處理一個(gè)文件需要2秒。處理兩個(gè)文件則需要14s免猾,在這段時(shí)間里囤热,CPU非常的空閑,它可以做一些別的事情,那么我們使用多個(gè)線程的話,是不是可以處理文件的同時(shí)去讀取新的文件忧侧,這樣就提高了時(shí)間效率,

2.程序響應(yīng)更快:假設(shè)做某一個(gè)服務(wù)的時(shí)候牌芋,它在某一個(gè)端口監(jiān)聽進(jìn)來的請(qǐng)求躺屁,當(dāng)一個(gè)請(qǐng)求到來時(shí)经宏,它去處理這個(gè)請(qǐng)求,然后再返回去監(jiān)聽耐亏。

3.程序設(shè)計(jì)簡(jiǎn)單

做多線程的時(shí)候運(yùn)用多線程的技術(shù)設(shè)計(jì)非常簡(jiǎn)單易用,遵循好一些規(guī)則沪斟,避免造成阻塞等操作,基本可以很快設(shè)計(jì)程序的需求择吊。

4.使用場(chǎng)景:

多線程:密集I/O任務(wù)(網(wǎng)絡(luò)I/O几睛,磁盤I/O,數(shù)據(jù)庫(kù)I/O)使用多線程合適所森。

三、線程與線程主要依靠什么通信

線程間通信主要通過共享內(nèi)存

3.什么是協(xié)程?

一個(gè)程序可以包含多個(gè)協(xié)程,線程相對(duì)獨(dú)立有自己的上下文,協(xié)程也是,但是協(xié)程由自己控制洪唐,不受操作系統(tǒng)控制凭需,可以不加鎖的訪問全局變量肝匆,所以上下文的切換非常快旗国,可以說是輕量級(jí)的線程能曾,也可以說稱之為用戶級(jí)別的線程就叫協(xié)程,一個(gè)線程可以多個(gè)協(xié)程蕊程,一個(gè)進(jìn)程也可以單獨(dú)擁有多個(gè)協(xié)程驼唱,線程進(jìn)程都是同步機(jī)制,而協(xié)程則是異步辨赐。

1.使用場(chǎng)景:

又稱微線程掀序,在單線程上執(zhí)行多個(gè)任務(wù)惭婿,用函數(shù)切換,開銷極小县袱。不通過操作系統(tǒng)調(diào)度佑力,沒有進(jìn)程、線程的切換開銷暴拄。genventmonkey.patchall

多線程請(qǐng)求返回是無序的,那個(gè)線程有數(shù)據(jù)返回就處理那個(gè)線程乖篷,而協(xié)程返回的數(shù)據(jù)是有序的,處理磁盤的I/O比較慢,處理網(wǎng)絡(luò)I/O性能還是比較高撕蔼。

4.進(jìn)程線程上下文切換

順便說一下上下文切換上下文切換就是從當(dāng)前執(zhí)行任務(wù)切換到另一個(gè)任務(wù)執(zhí)行的過程。但是琳骡,為了確保下次能從正確的位置繼續(xù)執(zhí)行,在切換之前楣号,會(huì)保存上一個(gè)任務(wù)的狀態(tài)炫狱。進(jìn)程上下文切換與線程上下文切換最主要的區(qū)別就是線程的切換虛擬空間內(nèi)存是相同的(因?yàn)槎际菍儆谧约旱倪M(jìn)程),但是视译,進(jìn)程切換的虛擬空間內(nèi)存則是不同的憎亚。同時(shí),這兩種上下文切換的處理都是通過操作系統(tǒng)內(nèi)核來完成的蝶锋。

上面畫了一個(gè)進(jìn)程,線程,協(xié)程的調(diào)用關(guān)系圖慌闭。

最后送福利了驴剔,加群即可獲取并發(fā)編程72題及答案?? 群號(hào):923116658

點(diǎn)擊鏈接加入群聊【Java架構(gòu)解析】:https://jq.qq.com/?_wv=1027&k=5e1QsXb

還有Java工程化粥庄、高性能及分布式、高性能布讹、高架構(gòu)、性能調(diào)優(yōu)白嘁、Spring膘流、MyBatis呼股、Netty源碼分析等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨的相關(guān)視頻資料,還有spring和虛擬機(jī)等書籍掃描版屎开,還有更多面試題等你來拿奄抽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逞度,一起剝皮案震驚了整個(gè)濱河市妙啃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馆匿,老刑警劉巖渐北,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铭拧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡呕臂,警方通過查閱死者的電腦和手機(jī)歧蒋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門疏尿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來褥琐,“玉大人,你說我怎么就攤上這事贸宏】暮椋” “怎么了析显?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵分尸,是天一觀的道長(zhǎng)歹嘹。 經(jīng)常有香客問我,道長(zhǎng)材蛛,這世上最難降的妖魔是什么卑吭? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任陨簇,我火速辦了婚禮迹淌,結(jié)果婚禮上唉窃,老公的妹妹穿的比我還像新娘纹份。我一直安慰自己,他們只是感情好蔓涧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布件已。 她就那樣靜靜地躺著,像睡著了一般元暴。 火紅的嫁衣襯著肌膚如雪篷扩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天茉盏,我揣著相機(jī)與錄音鉴未,去河邊找鬼。 笑死鸠姨,一個(gè)胖子當(dāng)著我的面吹牛铜秆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讶迁,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼连茧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了啸驯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溉愁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了反镇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彻磁,到底是詐尸還是另有隱情,我是刑警寧澤磁浇,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布衍锚,位于F島的核電站,受9級(jí)特大地震影響踢匣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜男娄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一尸折、第九天 我趴在偏房一處隱蔽的房頂上張望橄浓。 院中可真熱鬧,春花似錦准给、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至软驰,卻和暖如春硬鞍,著一層夾襖步出監(jiān)牢的瞬間锅减,已是汗流浹背握联。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工剿骨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜒犯,地道東北人罚随。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓潮改,卻偏偏與公主長(zhǎng)得像糕殉,于是被迫代替她去往敵國(guó)和親殖告。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阿蝶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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