關(guān)于多線程的理解

前言

線程是用來執(zhí)行任務(wù)的,線程徹底執(zhí)行完任務(wù)A才能去執(zhí)行任務(wù)B膜楷。為了同時執(zhí)行兩個任務(wù)旭咽,產(chǎn)生了多線程。

1赌厅、什么是進程穷绵?

進程就是在操作系統(tǒng)中運行的程序

進程不能執(zhí)行任務(wù)

進程在運行時創(chuàng)建的資源隨著進程的終止而死亡

2、線程

(1)進程本身不能執(zhí)行任務(wù)的特愿,進程想要執(zhí)行任務(wù)仲墨,必須要有線程,線程是進程內(nèi)部一個獨立的執(zhí)行單元揍障,同時只能執(zhí)行一個任務(wù)目养。線程被分為兩種,主線程和子線程

(2)線程執(zhí)行完畢就會被銷毀

(3)主線程:當(dāng)應(yīng)用程序啟動時自動創(chuàng)建和啟動毒嫡,通常用來處理用戶的輸入并響應(yīng)各種事件和消息癌蚁,主線程的終止也意味著該程序的結(jié)束。

(4)子線程:由主線程來創(chuàng)建兜畸,用來幫助主線程執(zhí)行程序的后臺處理任務(wù)努释,如果子線程A中有創(chuàng)建了一個子線程B,在創(chuàng)建之后咬摇,這兩者就會是相互獨立的伐蒂,多個子線程之間效果上可以同時執(zhí)行

(5)一個進程中可以有多個線程,并且所有線程都在該進程的虛擬地址空間中肛鹏,可以使用進程的全局變量和系統(tǒng)資源

3逸邦、關(guān)于多線程

(1)目前大多數(shù)的app,都需要連接服務(wù)器,而訪問服務(wù)器的速度可能快也可能很慢在扰。如果一個app訪問服務(wù)器的操作沒有在子線程操作的話缕减,在該app訪問服務(wù)器的過程中,該軟件是不能響應(yīng)用戶的操作的健田,只有該app訪問結(jié)束以后烛卧,app才能響應(yīng)用戶的操作,這就造成線程阻塞,也就是我們常見的卡頓現(xiàn)象总放。一條線程在同一時間內(nèi)只能執(zhí)行一個任務(wù),但是進程可以有多條線程呈宇。可以開啟多條線程來執(zhí)行不同的任務(wù),從而提高程序的執(zhí)行效率局雄,避免線程阻塞甥啄。

(2)操作系統(tǒng)會根據(jù)線程的優(yōu)先級(線程的優(yōu)先級可以手動設(shè)置)來安排CPU的時間,優(yōu)先級高的線程炬搭,優(yōu)先調(diào)用的幾率會更大蜈漓,同級的話,看線程執(zhí)行的先后宫盔。

(3)同一時間內(nèi)融虽,CPU只能處理一條線程,只有一條線程在工作灼芭。多線程并行執(zhí)行有额,其實就是各個線程不斷切換,因為執(zhí)行切換的時間很快很快彼绷,就造成了同時執(zhí)行的假象巍佑,原理如下,比如A寄悯,B兩個線程萤衰;

A執(zhí)行到某一時間段要切換了,可A任務(wù)沒完成猜旬,系統(tǒng)就會把A當(dāng)前執(zhí)行的位置和數(shù)據(jù)以入棧的方式保存起來

然后B線程執(zhí)行脆栋,B執(zhí)行時間到了,它的位置狀態(tài)等也會被系統(tǒng)保存到B的棧中洒擦。

(4)系統(tǒng)自動找到A的棧筹吐,將A之前保存的數(shù)據(jù)恢復(fù),又可以從A之前斷開的狀態(tài)繼續(xù)執(zhí)行下去秘遏,如此循環(huán),系統(tǒng)每開一個線程都有比較大的開銷嘉竟。若線程開的過多邦危,不僅會占用大量內(nèi)存和讓程序變得更加復(fù)雜,而且會加重CPU的負(fù)擔(dān)舍扰,這樣的軟件倦蚪,會使你的手機在冬天變成暖手寶。

4边苹、多線程的優(yōu)點和不足

優(yōu)點:(1)提高程序執(zhí)行效率陵且,避免線程阻塞造成的卡頓現(xiàn)象。

? ? ? ? ? (2)能適當(dāng)提高資源利用率(CPU,內(nèi)存)。

不可濫用多線程

開啟線程需要占用一定的內(nèi)存空間(默認(rèn)情況下慕购,主線程占用1M聊疲,子線程占用512KB,可以自己設(shè)置內(nèi)存大小沪悲,但必須是4的倍數(shù))获洲,如果開啟大量的線程,會占用大量的內(nèi)存空間殿如,降低程序的性能

線程越多贡珊,CPU在調(diào)度線程上的開銷就越大,程序設(shè)計更加復(fù)雜:比如線程之間的通信涉馁、多線程的數(shù)據(jù)共享

5门岔、線程與進程的關(guān)系

(1)線程是CPU執(zhí)行任務(wù)的基本單位,一個進程可以有多個線程烤送,但同時只能執(zhí)行一個任務(wù)寒随。

(2)進程就是運行中的軟件,是動態(tài)的胯努。

(3)一個操作系統(tǒng)可以對應(yīng)多個進程,一個進程可以有多條線程,但至少有一個線程

(4)同一個進程內(nèi)的線程共享進程里的資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牢裳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叶沛,更是在濱河造成了極大的恐慌蒲讯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灰署,死亡現(xiàn)場離奇詭異判帮,居然都是意外死亡,警方通過查閱死者的電腦和手機溉箕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門晦墙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肴茄,你說我怎么就攤上這事晌畅。” “怎么了寡痰?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵抗楔,是天一觀的道長。 經(jīng)常有香客問我拦坠,道長连躏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任贞滨,我火速辦了婚禮入热,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己勺良,他們只是感情好绰播,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著郑气,像睡著了一般幅垮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尾组,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天忙芒,我揣著相機與錄音,去河邊找鬼讳侨。 笑死呵萨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跨跨。 我是一名探鬼主播潮峦,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勇婴!你這毒婦竟也來了忱嘹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤耕渴,失蹤者是張志新(化名)和其女友劉穎拘悦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橱脸,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡础米,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了添诉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁桑。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栏赴,靈堂內(nèi)的尸體忽然破棺而出蘑斧,到底是詐尸還是另有隱情,我是刑警寧澤须眷,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布乌叶,位于F島的核電站,受9級特大地震影響柒爸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜事扭,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一捎稚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦今野、人聲如沸葡公。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽催什。三九已至,卻和暖如春宰睡,著一層夾襖步出監(jiān)牢的瞬間蒲凶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工拆内, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旋圆,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓麸恍,卻偏偏與公主長得像灵巧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抹沪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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