多線程與進(jìn)程

前言

最近呢,有好多初入JAVA領(lǐng)域的初學(xué)者問(wèn)我多線程到底是什么呢橱乱?是不是就是進(jìn)程啊,所有人的問(wèn)題幾乎都一模一樣粱甫,說(shuō)在網(wǎng)上看了好多文章,都說(shuō)的特別高深作瞄,看完看不明白茶宵。
那么到底什么是多線程呢?它到底和進(jìn)程有什么區(qū)別呢宗挥?如何才能讓初學(xué)者也能明白這個(gè)東西到底是什么乌庶?下文就讓我們來(lái)站在小白的角度來(lái)深入的解析一下這個(gè)在日常編程領(lǐng)域無(wú)處不在的東西把!

線程

線程,有時(shí)被稱為輕量級(jí)進(jìn)程( Lightweight Process,LWP),是程序執(zhí)行流的最小單
元契耿。一個(gè)標(biāo)準(zhǔn)的線程由線程D,當(dāng)前指令指針(PC),寄存器集合和堆棧組成瞒大。另外
線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系
統(tǒng)資源,只擁有一點(diǎn)兒在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程
共享進(jìn)程所擁有的全部資源。一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程,同一進(jìn)程中的多
個(gè)線程之間可以并發(fā)執(zhí)行搪桂。由于線程之間的相互制約,致使線程在運(yùn)行中呈現(xiàn)出間斷
性透敌。線程也有就緒、阻塞和運(yùn)行三種基本狀態(tài)踢械。就緒狀態(tài)是指線程具備運(yùn)行的所有條
件,邏輯上可以運(yùn)行,在等待處理機(jī);運(yùn)行狀態(tài)是指線程占有處理機(jī)正在運(yùn)行;阻塞
狀態(tài)是指線程在等待一個(gè)事件(如某個(gè)信號(hào)量),邏輯上不可執(zhí)行酗电。每一個(gè)程序都至
少有一個(gè)線程,若程序只有一個(gè)線程,那就是程序本身
線程優(yōu)先級(jí)
雖然我們說(shuō)線程是并發(fā)運(yùn)行的。然而事實(shí)常常并非如此内列。正如前面談到的,當(dāng)系統(tǒng)中
有一個(gè)CPU時(shí),以某種順序在單CPU情況下執(zhí)行多線程被稱為調(diào)度( scheduling)
Java釆用的是一種簡(jiǎn)單撵术、固定的調(diào)度法,即固定優(yōu)先級(jí)調(diào)度。這種算法是根據(jù)處于可
運(yùn)行態(tài)線程的相對(duì)優(yōu)先級(jí)來(lái)實(shí)行調(diào)度话瞧。當(dāng)線程產(chǎn)生時(shí),它繼承原線程的優(yōu)先級(jí)嫩与。在需
要時(shí)可對(duì)優(yōu)先級(jí)進(jìn)行修改寝姿。在任何時(shí)刻,如果有多條線程等待運(yùn)行,系統(tǒng)選擇優(yōu)先級(jí)N
最高的可運(yùn)行線程運(yùn)行。只有當(dāng)它停止划滋、自動(dòng)放棄饵筑、或由于某種原因成為非運(yùn)行態(tài)低
優(yōu)先級(jí)的線程才能運(yùn)行。如果兩個(gè)線程具有相同的優(yōu)先級(jí),它們將被交替地
ava實(shí)時(shí)系統(tǒng)的線程調(diào)度算法還是強(qiáng)制性的,在任何時(shí)刻,如果一個(gè)其他線程優(yōu)先
級(jí)都高的線程的狀態(tài)變?yōu)榭蛇\(yùn)行態(tài),實(shí)時(shí)系統(tǒng)將選擇該線程來(lái)越個(gè)應(yīng)用程序可
以通過(guò)使用線程中的方法 setPriority(int),來(lái)設(shè)置線程的優(yōu)先級(jí)大小

進(jìn)程

狹義定義:進(jìn)程是正在運(yùn)行的程序的實(shí)例(an instance of a computer program that is being executed)古毛。
廣義定義:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)翻翩。它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中稻薇,進(jìn)程既是基本的分配單元嫂冻,也是基本的執(zhí)行單元。
進(jìn)程的概念主要有兩點(diǎn):第一塞椎,進(jìn)程是一個(gè)實(shí)體桨仿。每一個(gè)進(jìn)程都有它自己的地址空間,一般情況下案狠,包括文本區(qū)域(text region)服傍、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)。文本區(qū)域存儲(chǔ)處理器執(zhí)行的代碼骂铁;數(shù)據(jù)區(qū)域存儲(chǔ)變量和進(jìn)程執(zhí)行期間使用的動(dòng)態(tài)分配的內(nèi)存吹零;堆棧區(qū)域存儲(chǔ)著活動(dòng)過(guò)程調(diào)用的指令和本地變量。第二拉庵,進(jìn)程是一個(gè)“執(zhí)行中的程序”灿椅。程序是一個(gè)沒(méi)有生命的實(shí)體,只有處理器賦予程序生命時(shí)(操作系統(tǒng)執(zhí)行之)钞支,它才能成為一個(gè)活動(dòng)的實(shí)體茫蛹,我們稱其為進(jìn)程 [3]
進(jìn)程是操作系統(tǒng)中最基本烁挟、重要的概念婴洼。是多道程序系統(tǒng)出現(xiàn)后,為了刻畫系統(tǒng)內(nèi)部出現(xiàn)的動(dòng)態(tài)情況撼嗓,描述系統(tǒng)內(nèi)部各道程序的活動(dòng)規(guī)律引進(jìn)的一個(gè)概念,所有多道程序設(shè)計(jì)操作系統(tǒng)都建立在進(jìn)程的基礎(chǔ)上柬采。

是不是看了上面的還是一臉懵逼呢?看的云里霧里静稻。放心警没,一臉懵逼的進(jìn)來(lái)是不會(huì)讓你一臉懵逼的出去的。來(lái)振湾,看這里杀迹!我們來(lái)舉個(gè)例子來(lái)說(shuō)一下進(jìn)程和線程的聯(lián)系和區(qū)別你就會(huì)明白了。
假設(shè)用戶啟動(dòng)了一個(gè)窗口中的數(shù)據(jù)庫(kù)應(yīng)用程序,這個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序就是咱們的進(jìn)程树酪,操作系統(tǒng)就將對(duì)數(shù)據(jù)庫(kù)的調(diào)用表示為一個(gè)進(jìn)程浅碾。假設(shè)用戶要從數(shù)據(jù)庫(kù)中產(chǎn)生一份工資單報(bào)表,并傳到一個(gè)文件中续语,這是一個(gè)子任務(wù)垂谢;在產(chǎn)生工資單報(bào)表的過(guò)程中,用戶又可以輸人數(shù)據(jù)庫(kù)查詢請(qǐng)求疮茄,這又是一個(gè)子任務(wù)滥朱。這樣,操作系統(tǒng)則把每一個(gè)請(qǐng)求――工資單報(bào)表和新輸人的數(shù)據(jù)查詢表示為數(shù)據(jù)庫(kù)進(jìn)程中的獨(dú)立的線程力试。線程可以在處理器上獨(dú)立調(diào)度執(zhí)行徙邻,這樣,在多處理器環(huán)境下就允許幾個(gè)線程各自在單獨(dú)處理器上進(jìn)行畸裳。操作系統(tǒng)提供線程就是為了方便而有效地實(shí)現(xiàn)這種并發(fā)性缰犁。是不是很清楚了,那么再想一下怖糊,為什么明明單線程也可以實(shí)現(xiàn)非要用多線程呢帅容?
(1)易于調(diào)度。
(2)提高并發(fā)性伍伤。通過(guò)線程可方便有效地實(shí)現(xiàn)并發(fā)性并徘。進(jìn)程可創(chuàng)建多個(gè)線程來(lái)執(zhí)行同一程序的不同部分。
(3)開(kāi)銷少扰魂。創(chuàng)建線程比創(chuàng)建進(jìn)程要快饮亏,所需開(kāi)銷很少。阅爽。
(4)利于充分發(fā)揮多處理器的功能。通過(guò)創(chuàng)建多線程進(jìn)程(即一個(gè)進(jìn)程可具有兩個(gè)或更多個(gè)線程)荐开,每個(gè)線程在一個(gè)處理器上運(yùn)行付翁,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性,使每個(gè)處理器都得到充分運(yùn)行晃听。

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

(1)一個(gè)線程只能屬于一個(gè)進(jìn)程百侧,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程能扒。線程是操作系統(tǒng)可識(shí)別的最小執(zhí)行和調(diào)度單位佣渴。
(2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源初斑。 同一進(jìn)程中的多個(gè)線程共享代碼段(代碼和常量)辛润,數(shù)據(jù)段(全局變量和靜態(tài)變量),擴(kuò)展段(堆存儲(chǔ))见秤。但是每個(gè)線程擁有自己的棧段砂竖,棧段又叫運(yùn)行時(shí)段真椿,用來(lái)存放所有局部變量和臨時(shí)變量。
(3)處理機(jī)分給線程乎澄,即真正在處理機(jī)上運(yùn)行的是線程突硝。
(4)線程在執(zhí)行過(guò)程中,需要協(xié)作同步置济。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步解恰。
怎么樣?是不是很清楚了浙于?那么咱們今天的文章就到這里啦护盈。是不是又學(xué)到了!如果還有想聽(tīng)的記得在下方留言哦路媚。說(shuō)不定下一篇就會(huì)講你想知道的內(nèi)容黄琼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市整慎,隨后出現(xiàn)的幾起案子脏款,更是在濱河造成了極大的恐慌,老刑警劉巖裤园,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撤师,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拧揽,警方通過(guò)查閱死者的電腦和手機(jī)剃盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淤袜,“玉大人痒谴,你說(shuō)我怎么就攤上這事≌∠郏” “怎么了积蔚?”我有些...
    開(kāi)封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)烦周。 經(jīng)常有香客問(wèn)我尽爆,道長(zhǎng),這世上最難降的妖魔是什么读慎? 我笑而不...
    開(kāi)封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任漱贱,我火速辦了婚禮,結(jié)果婚禮上夭委,老公的妹妹穿的比我還像新娘幅狮。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布彪笼。 她就那樣靜靜地躺著钻注,像睡著了一般。 火紅的嫁衣襯著肌膚如雪配猫。 梳的紋絲不亂的頭發(fā)上幅恋,一...
    開(kāi)封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音泵肄,去河邊找鬼捆交。 笑死,一個(gè)胖子當(dāng)著我的面吹牛腐巢,可吹牛的內(nèi)容都是我干的品追。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冯丙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肉瓦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胃惜,我...
    開(kāi)封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泞莉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后船殉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鲫趁,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年利虫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挨厚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糠惫,死狀恐怖疫剃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硼讽,我是刑警寧澤慌申,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站理郑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咨油。R本人自食惡果不足惜您炉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望役电。 院中可真熱鬧赚爵,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至窝剖,卻和暖如春麻掸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赐纱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工脊奋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疙描。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓诚隙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親起胰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子久又,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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