java并發(fā)編程(一)線(xiàn)程與進(jìn)程

一、進(jìn)程

進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng)酵紫,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位荤懂,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。

  • 在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中硫眨,進(jìn)程是程序的基本執(zhí)行實(shí)體足淆。
  • 在當(dāng)代面向線(xiàn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中巢块,進(jìn)程是線(xiàn)程的容器。

程序是指令巧号、數(shù)據(jù)及其組織形式的描述族奢,進(jìn)程是程序的實(shí)體

1.1 進(jìn)程切換

進(jìn)程從硬盤(pán)讀取我們的程序代碼丹鸿,這個(gè)時(shí)候是比較費(fèi)時(shí)的越走,CPU不會(huì)阻塞在這里等著,而是切換到其他進(jìn)程靠欢,當(dāng)數(shù)據(jù)加載完成時(shí)廊敌,CPU會(huì)收到個(gè)中斷,繼續(xù)執(zhí)行這個(gè)請(qǐng)求门怪。

對(duì)于單核CPU而言骡澈,短時(shí)間內(nèi)會(huì)執(zhí)行多個(gè)進(jìn)程,造成并行的錯(cuò)覺(jué)掷空,實(shí)際可以理解為是并發(fā)的操作肋殴。

1.2 內(nèi)核態(tài)與用戶(hù)態(tài)

進(jìn)程分為用戶(hù)進(jìn)程內(nèi)核進(jìn)程兩種囤锉。

為了安全,用戶(hù)進(jìn)程是受限的护锤,它不能隨意訪(fǎng)問(wèn)資源官地、獲取資源。所以烙懦,由內(nèi)核進(jìn)程負(fù)責(zé)管理和分配資源驱入,它具有最高權(quán)限,而用戶(hù)進(jìn)程使用被分配的資源氯析。且沧侥,操作系統(tǒng)必須能夠在有需要的時(shí)候能立即切換回內(nèi)核進(jìn)程(通過(guò)中斷),只有這樣魄鸦,操作系統(tǒng)才能有安全感宴杀。

1.3 用戶(hù)態(tài)向內(nèi)核態(tài)切換

1、發(fā)生系統(tǒng)調(diào)用時(shí)

2拾因、產(chǎn)生異常時(shí)

3旺罢、外設(shè)產(chǎn)生中斷時(shí)

這里不做過(guò)多解釋了,感興趣同學(xué)自行學(xué)習(xí)linux原理绢记。

二扁达、線(xiàn)程

線(xiàn)程(英語(yǔ):thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。

它被包含在進(jìn)程之中蠢熄,是進(jìn)程中的實(shí)際運(yùn)作單位跪解。一條線(xiàn)程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線(xiàn)程签孔,每條線(xiàn)程并行執(zhí)行不同的任務(wù)叉讥。

2.1 進(jìn)程與線(xiàn)程的關(guān)系

1、一個(gè)進(jìn)程中可以同時(shí)存在多個(gè)線(xiàn)程饥追;

2图仓、各個(gè)線(xiàn)程之間可以并發(fā)執(zhí)行;

3但绕、各個(gè)線(xiàn)程之間可以共享當(dāng)前線(xiàn)程中的地址空間和文件等資源救崔;

4、線(xiàn)程是調(diào)度的基本單位捏顺,而進(jìn)程則是資源擁有的基本單位六孵;

5、當(dāng)進(jìn)程只有一個(gè)線(xiàn)程時(shí)幅骄,可以認(rèn)為進(jìn)程就等于線(xiàn)程劫窒;

2.2 線(xiàn)程內(nèi)存模型

1) 在看線(xiàn)程內(nèi)存模型之前,我們首先看下計(jì)算機(jī)的硬件內(nèi)存模型昌执。


硬件內(nèi)存模型

寄存器:寄存器部件烛亦,包括通用寄存器诈泼、專(zhuān)用寄存器和控制寄存器。通用寄存器又可分定點(diǎn)數(shù)和浮點(diǎn)數(shù)兩類(lèi)煤禽,它們用來(lái)保存指令執(zhí)行過(guò)程中臨時(shí)存放的寄存器操作數(shù)和中間(或最終)的操作結(jié)果铐达。 通用寄存器是中央處理器的重要部件之一。

高速多級(jí)緩存:用于解決CPU核心與內(nèi)存的速度差異問(wèn)題檬果,CPU核心速度快瓮孙,內(nèi)存相比要慢很多,而緩存要比內(nèi)存速度快选脊。

緩存協(xié)議:多級(jí)緩存的引入在多核CPU時(shí)代導(dǎo)致了緩存不一致的問(wèn)題杭抠,這里需要引入MESI協(xié)議緩存解決這一問(wèn)題,保證緩存中的信息與內(nèi)存中的信息一致恳啥。MESI協(xié)議緩存這里不做講解偏灿。

2)下一步我們看下java內(nèi)存模型與線(xiàn)程模型的關(guān)系

java程序的一次編寫(xiě)到處運(yùn)行如何體現(xiàn)的?

jvm內(nèi)存模型屏蔽了不同硬件的內(nèi)存模型钝的。jvm內(nèi)存模型規(guī)定翁垂,所有的變量都存儲(chǔ)在jvm主內(nèi)存中,即堆內(nèi)存硝桩,這里指可共享的變量(new出來(lái)的實(shí)例化對(duì)象沿猜,數(shù)組等)。這里提出主內(nèi)存與工作內(nèi)存的概念碗脊,每個(gè)線(xiàn)程有自己的工作內(nèi)存啼肩,保存自己私有的變量,線(xiàn)程從主內(nèi)存獲取變量的副本作為自己的私有變量衙伶,不允許直接操作主內(nèi)存的變量祈坠。線(xiàn)程的工作內(nèi)存也是獨(dú)立的,無(wú)法操作其他線(xiàn)程的變量痕支。

jvm線(xiàn)程內(nèi)存關(guān)系圖

3)硬件內(nèi)存模型與jvm內(nèi)存模型的關(guān)系
如下圖所示颁虐,jvm內(nèi)存模型和硬件內(nèi)存模型相似蛮原,但并不完全相同卧须。但是jvm的數(shù)據(jù)大部分會(huì)存儲(chǔ)到硬件主內(nèi)存中,部分會(huì)存儲(chǔ)到寄存器或緩存中儒陨,這里只做簡(jiǎn)單說(shuō)明花嘶。

硬件內(nèi)存模型與jvm內(nèi)存模型關(guān)系
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹦漠,隨后出現(xiàn)的幾起案子椭员,更是在濱河造成了極大的恐慌,老刑警劉巖笛园,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘击,死亡現(xiàn)場(chǎng)離奇詭異侍芝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)埋同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)州叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人凶赁,你說(shuō)我怎么就攤上這事咧栗。” “怎么了虱肄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵致板,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我咏窿,道長(zhǎng)斟或,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任集嵌,我火速辦了婚禮缕粹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纸淮。我一直安慰自己平斩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布咽块。 她就那樣靜靜地躺著绘面,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侈沪。 梳的紋絲不亂的頭發(fā)上揭璃,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音亭罪,去河邊找鬼瘦馍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛应役,可吹牛的內(nèi)容都是我干的情组。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼箩祥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼院崇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起袍祖,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤底瓣,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蕉陋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捐凭,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拨扶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茁肠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈雄。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖官套,靈堂內(nèi)的尸體忽然破棺而出酒奶,到底是詐尸還是另有隱情,我是刑警寧澤奶赔,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布惋嚎,位于F島的核電站,受9級(jí)特大地震影響站刑,放射性物質(zhì)發(fā)生泄漏另伍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一绞旅、第九天 我趴在偏房一處隱蔽的房頂上張望摆尝。 院中可真熱鬧,春花似錦因悲、人聲如沸堕汞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)讯检。三九已至,卻和暖如春卫旱,著一層夾襖步出監(jiān)牢的瞬間人灼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工顾翼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留投放,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓适贸,卻偏偏與公主長(zhǎng)得像灸芳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子取逾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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