多線程這塊兒東西几莽,主要是參考了高洪巖所著的《Java多線程編程核心技術(shù)》,算是做一個(gè)讀書筆記吧。其中有些書中沒有深入講到的知識(shí)跑筝,我也額外找了很多資料參考學(xué)習(xí),希望能盡量總結(jié)地全面一點(diǎn)吧瞒滴。
廢話少說曲梗,馬上開始第一篇赞警,認(rèn)識(shí)多線程。這一篇主要參考了劉欣的 碼農(nóng)翻身 公眾號(hào)里面的文章虏两,這個(gè)號(hào)滿滿的干貨啊愧旦,大家有興趣可以關(guān)注一下,保你收獲多多定罢。
1.為什么要有多線程笤虫?
多線程的出現(xiàn)是為了更好的利用CPU資源。CPU處理速度這么快祖凫,傳統(tǒng)的單線程讓CPU處理一件任務(wù)琼蚯,完全沒有發(fā)揮出CPU的能力,以Word為例惠况,我在編寫的時(shí)候遭庶,Word要執(zhí)行自動(dòng)保存,我還得等保存完了稠屠,才能繼續(xù)寫峦睡,這體驗(yàn)也太差了。為了解決這個(gè)問題权埠,我開兩個(gè)線程榨了,一個(gè)處理寫,一個(gè)處理保存弊知,CPU在兩個(gè)線程之間快速切換阻逮,快到你感覺兩件事是同時(shí)在進(jìn)行,這才像話嘛秩彤。
2.進(jìn)程和線程有啥區(qū)別叔扼?
進(jìn)程是操作系統(tǒng)分配資源的基本單位,線程是CPU調(diào)度的基本單位漫雷。在Windows系統(tǒng)中瓜富,打開任務(wù)管理器,就能看到一個(gè)選項(xiàng)卡叫進(jìn)程降盹,里面有QQ与柑,微信,火狐瀏覽器等等蓄坏,對(duì)于QQ這個(gè)進(jìn)程价捧,就有很多線程處理不同的任務(wù),視頻聊天線程涡戳、文件傳輸線程等结蟋。有點(diǎn)像老板接了個(gè)項(xiàng)目,招了一堆程序員來搞渔彰,這里是進(jìn)程申請(qǐng)了資源嵌屎,讓線程來進(jìn)行處理推正。
3.為啥沒有多進(jìn)程編程?
- 進(jìn)程之間是隔離的宝惰,共享數(shù)據(jù)很麻煩
- JVM其實(shí)就是一個(gè)進(jìn)程植榕,當(dāng)然不能在進(jìn)程中進(jìn)行多進(jìn)程編程了