線(xiàn)程與進(jìn)程理論的知識(shí)入門(mén)

1.線(xiàn)程和進(jìn)程的定義

  • 線(xiàn)程:CPU調(diào)度的最小單位,不能獨(dú)立于進(jìn)程單獨(dú)存在
  • 進(jìn)程:應(yīng)用在操作系統(tǒng)中運(yùn)行最小的分配單位

2.CPU核心數(shù)和線(xiàn)程數(shù)的關(guān)系

CPU核心數(shù)和線(xiàn)程數(shù)的關(guān)系

內(nèi)核數(shù)和線(xiàn)程的執(zhí)行個(gè)數(shù) 一對(duì)一的關(guān)系
邏輯處理器是intel做的虛擬化

3.CPU時(shí)間片輪轉(zhuǎn)機(jī)制

時(shí)間片輪轉(zhuǎn)調(diào)度是一種最古老、最簡(jiǎn)單、最公平且使用最廣的算法,又稱(chēng) RR 調(diào)度。每個(gè)進(jìn)程被分配一個(gè)時(shí)間段,稱(chēng)作它的時(shí)間片,即該進(jìn)程允許運(yùn)行的時(shí)間利凑。

  • 上下文切換
    切換執(zhí)行的進(jìn)程

4.并行和并發(fā)

  • 并行(同一時(shí)刻)
    指應(yīng)用能夠同時(shí)執(zhí)行不同的任務(wù),例:吃飯的時(shí)候可以邊吃飯邊打電話(huà), 這兩件事情可以同時(shí)執(zhí)行
  • 并發(fā)(同一時(shí)間單位)
    指應(yīng)用能夠交替執(zhí)行不同的任務(wù),比如單 CPU 核心下執(zhí)行多線(xiàn)程并非是 同時(shí)執(zhí)行多個(gè)任務(wù),如果你開(kāi)兩個(gè)線(xiàn)程執(zhí)行,就是在你幾乎不可能察覺(jué)到的速度不斷去切換這兩個(gè)任務(wù),已達(dá)到"同時(shí)執(zhí)行效果",其實(shí)并不是的,只是計(jì)算機(jī)的速度太快,我們無(wú)法察覺(jué)到而已.
  • 兩者區(qū)別:一個(gè)是交替執(zhí)行,一個(gè)是同時(shí)執(zhí)行

5.高并發(fā)編程的意義、好處和注意事項(xiàng)

  • 好處
    充分利用 CPU 的資源
    加快響應(yīng)用戶(hù)的時(shí)間
    可以使你的代碼模塊化,異步化,簡(jiǎn)單化
  • 注意事項(xiàng)
    線(xiàn)程之間的安全性
    線(xiàn)程之間的死鎖
    線(xiàn)程太多了會(huì)將服務(wù)器資源耗盡形成死機(jī)當(dāng)機(jī)

6.Java 程序天生就是多線(xiàn)程的

  • 一個(gè)最簡(jiǎn)單的main函數(shù)創(chuàng)建的所有線(xiàn)程
[6] Monitor Ctrl-Break //監(jiān)控 Ctrl-Break 中斷信號(hào)的 
[5] Attach Listener //內(nèi)存 dump,線(xiàn)程 dump崇裁,類(lèi)信息統(tǒng)計(jì),獲取系統(tǒng)屬性等 [4] Signal Dispatcher // 分發(fā)處理發(fā)送給 JVM 信號(hào)的線(xiàn)程 
[3] Finalizer // 調(diào)用對(duì)象 finalize 方法的線(xiàn)程 
[2] Reference Handler//清除 Reference 的線(xiàn)程 
[1] main //main 線(xiàn)程就珠,用戶(hù)程序入口

7.java新啟線(xiàn)程有幾種方式(兩種)

注意:在官方Thread類(lèi)的代碼注釋中寫(xiě)明是兩種

  • 類(lèi)Thread
X extends Thread;寇壳,然后 X.start
  • 接口Runnable
X implements Runnable;然后交給 Thread 運(yùn)行
  • Thread 和 Runnable 的區(qū)別
    Thread 才是 Java 里對(duì)線(xiàn)程的唯一抽象妻怎,Runnable 只是對(duì)任務(wù)(業(yè)務(wù)邏輯) 的抽象乃摹。Thread 可以接受任意一個(gè) Runnable 的實(shí)例并執(zhí)行。

8.線(xiàn)程終止

暫停锰提、恢復(fù)和停止操作對(duì)應(yīng)在線(xiàn)程 Thread 的 API 就是 suspend()鸡典、resume() 和 stop()。但是這些 API 是過(guò)期的榛丢,也就是不建議使用的铲球。

  • stop()方 法在終結(jié)一個(gè)線(xiàn)程時(shí)不會(huì)保證線(xiàn)程的資源正常釋放,通常是沒(méi)有給予線(xiàn)程完成資源釋放工作的機(jī)會(huì)晰赞,因此會(huì)導(dǎo)致程序可能工作在不確定狀態(tài)下稼病。

  • interrupt()方法:修改線(xiàn)程中斷標(biāo)識(shí)位

  • isInterrupted():判斷線(xiàn)程中斷標(biāo)識(shí)位

  • Thread.interrupted() :進(jìn)行判斷當(dāng)前線(xiàn)程是否被中斷,不過(guò) Thread.interrupted() 會(huì)同時(shí)將中斷標(biāo)識(shí)位改寫(xiě)為 false掖鱼。

  • JDK中的 java里的線(xiàn)程是協(xié)作式的然走,不是搶占式的

Thread.currentThread().isInterrupted() //判斷當(dāng)前線(xiàn)程的標(biāo)識(shí)位
  • 中斷異常在阻塞線(xiàn)程是對(duì)中斷標(biāo)識(shí)位的影響
    中斷異常捕獲到異常時(shí)會(huì)修改中斷標(biāo)志位為false

9.對(duì) Java 里的線(xiàn)程再多一點(diǎn)點(diǎn)認(rèn)識(shí)

  • start 和 run方法的區(qū)別
    start才是真正和線(xiàn)程產(chǎn)生關(guān)系,僅可以調(diào)用一次
    run方法時(shí)業(yè)務(wù)邏輯實(shí)現(xiàn)的地方戏挡,run可以反復(fù)調(diào)用芍瑞,可以脫離線(xiàn)程調(diào)用

  • join方法(可以是線(xiàn)程的執(zhí)行變成串行)
    把指定的線(xiàn)程加入到當(dāng)前線(xiàn)程,可以將兩個(gè)交替執(zhí)行的線(xiàn)程合并為順序執(zhí)行褐墅。 比如在線(xiàn)程 B 中調(diào)用了線(xiàn)程 A 的 Join()方法拆檬,直到線(xiàn)程 A 執(zhí)行完畢后,才會(huì)繼續(xù) 執(zhí)行線(xiàn)程 B妥凳。

  • 線(xiàn)程的優(yōu)先級(jí)(優(yōu)先級(jí)的范 圍從 1~10)
    在不同的 JVM 以及操作系統(tǒng)上竟贯,線(xiàn)程規(guī)劃會(huì) 存在差異,有些操作系統(tǒng)甚至?xí)雎詫?duì)線(xiàn)程優(yōu)先級(jí)的設(shè)定

  • 守護(hù)線(xiàn)程
    Daemon(守護(hù))線(xiàn)程是一種支持型線(xiàn)程逝钥,因?yàn)樗饕挥米鞒绦蛑泻笈_(tái)調(diào) 度以及支持性工作澄耍。這意味著,當(dāng)一個(gè) Java 虛擬機(jī)中不存在非 Daemon 線(xiàn)程的 時(shí)候,Java 虛擬機(jī)將會(huì)退出齐莲×≌荆可以通過(guò)調(diào)用 Thread.setDaemon(true)將線(xiàn)程設(shè)置 為 Daemon 線(xiàn)程。我們一般用不上选酗,比如垃圾回收線(xiàn)程就是 Daemon 線(xiàn)程阵难。
    Daemon 線(xiàn)程被用作完成支持性工作,但是在 Java 虛擬機(jī)退出時(shí) Daemon 線(xiàn) 程中的 finally 塊并不一定會(huì)執(zhí)行芒填。在構(gòu)建 Daemon 線(xiàn)程時(shí)呜叫,不能依靠 finally 塊中 的內(nèi)容來(lái)確保執(zhí)行關(guān)閉或清理資源的邏輯。

10.synchronized 內(nèi)置鎖

  • 用處與用法
    同步塊
    同步方法
  • 對(duì)象鎖:對(duì)象鎖是用于對(duì)象實(shí)例方法
  • 類(lèi)鎖:類(lèi)鎖是用于類(lèi)的靜態(tài) 方法或者一個(gè)類(lèi)的 class 對(duì)象上的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末殿衰,一起剝皮案震驚了整個(gè)濱河市朱庆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷祥,老刑警劉巖娱颊,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凯砍,居然都是意外死亡箱硕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)悟衩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剧罩,“玉大人,你說(shuō)我怎么就攤上這事座泳』菸簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵挑势,是天一觀(guān)的道長(zhǎng)镇防。 經(jīng)常有香客問(wèn)我,道長(zhǎng)薛耻,這世上最難降的妖魔是什么营罢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任赏陵,我火速辦了婚禮饼齿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝙搔。我一直安慰自己缕溉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布吃型。 她就那樣靜靜地躺著证鸥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枉层,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天泉褐,我揣著相機(jī)與錄音,去河邊找鬼鸟蜡。 笑死膜赃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揉忘。 我是一名探鬼主播跳座,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泣矛!你這毒婦竟也來(lái)了疲眷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤您朽,失蹤者是張志新(化名)和其女友劉穎狂丝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虚倒,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡美侦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魂奥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菠剩。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耻煤,靈堂內(nèi)的尸體忽然破棺而出具壮,到底是詐尸還是另有隱情,我是刑警寧澤哈蝇,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布棺妓,位于F島的核電站,受9級(jí)特大地震影響炮赦,放射性物質(zhì)發(fā)生泄漏怜跑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一吠勘、第九天 我趴在偏房一處隱蔽的房頂上張望性芬。 院中可真熱鬧,春花似錦剧防、人聲如沸植锉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俊庇。三九已至狮暑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辉饱,已是汗流浹背搬男。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彭沼,地道東北人止后。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像溜腐,于是被迫代替她去往敵國(guó)和親译株。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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