我们为何要使用多线程,它有什么优点?
其實(shí)在平時(shí)的開(kāi)發(fā)中,很多程序員都不會(huì)去寫(xiě)線(xiàn)程,為啥?因?yàn)槁闊?#xff0c;其次是用到的地方并不多,除非逼不得已,大家都不會(huì)去寫(xiě),畢竟寫(xiě)一天代碼,拿一天工資,是吧?
麻煩歸麻煩,但是多線(xiàn)程的優(yōu)點(diǎn)不得不說(shuō):
1. 資源利用率提升,程序處理效率提高
打個(gè)比方:我們做上傳圖片的時(shí)候,在上傳成功后往往會(huì)進(jìn)行圖片的處理,原圖保存后,會(huì)再生成一張小圖以作為一些應(yīng)用的預(yù)覽圖,那么原圖的處理就需要程序去讀取再處理,假設(shè)讀取需要花費(fèi)1秒,處理需要2秒,現(xiàn)在有3張大圖,所需要耗費(fèi)的時(shí)間就是(1+2)X3=9秒,根據(jù)圖片的不同,那么單位時(shí)間會(huì)更多,總計(jì)時(shí)間就會(huì)更久。
那么如果把程序設(shè)計(jì)更好的話(huà),那就是在讀取文件的時(shí)候同時(shí)處理上一個(gè)文件,這樣就可以盡可能的縮短時(shí)間,減少客戶(hù)端的響應(yīng),同時(shí)也提升了CPU的使用率。
如果還不能理解的話(huà)那就再舉個(gè)例子,我朋友公司是專(zhuān)為某銀行處理數(shù)據(jù)同步的問(wèn)題,每天凌晨銀行那邊會(huì)有幾十萬(wàn)條數(shù)據(jù)發(fā)送過(guò)來(lái)進(jìn)行處理,項(xiàng)目本身就是個(gè)坑,幾百萬(wàn)條數(shù)據(jù)接收后直接去處理了,每次運(yùn)行大多都要耗費(fèi)2.5個(gè)小時(shí),時(shí)間實(shí)在太久,如果哪天有幾億數(shù)據(jù)是不是要跑幾十個(gè)小時(shí)了?那么就可以用多線(xiàn)程,切割這個(gè)數(shù)據(jù),利用不同的線(xiàn)程來(lái)處理,最后把時(shí)間縮短到了半小時(shí)左右
?
2. 代碼會(huì)相對(duì)簡(jiǎn)單
如果利用單線(xiàn)程去處理文件,那么我們就得標(biāo)記每次處理的各個(gè)節(jié)點(diǎn)的狀態(tài);而如果使用多線(xiàn)程的話(huà)處理完一個(gè)扔一個(gè),可以簡(jiǎn)便不少
?
3.?軟件運(yùn)行速度提升
就像之前所說(shuō)的魔獸爭(zhēng)霸那樣,如果采礦伐木打獵都是由一個(gè)農(nóng)民工來(lái)做的話(huà),那他會(huì)累死,而如果分配3個(gè)農(nóng)民工來(lái)做的話(huà),那么時(shí)間大大縮短;同理,軟件程序在處理文件的時(shí)候也是一個(gè)道理。
也就是說(shuō),往常我們監(jiān)聽(tīng)的是用戶(hù)請(qǐng)求,現(xiàn)在我們把用戶(hù)請(qǐng)求塞給線(xiàn)程,我們?nèi)ケO(jiān)聽(tīng)線(xiàn)程就可以了。
舉一個(gè)不恰當(dāng)?shù)睦?#xff0c;我們?cè)谟胑clipse的時(shí)候經(jīng)常會(huì)出現(xiàn)這樣的情況,一個(gè)progress被另一個(gè)卡住,下一個(gè)必須等待上一個(gè)執(zhí)行完畢后再執(zhí)行,完畢后我們方可編寫(xiě)代碼,這種情況尤其出現(xiàn)在maven編譯或者下載jar包的時(shí)候。
假如說(shuō),eclipse是同時(shí)進(jìn)行任務(wù)處理的,那么每個(gè)任務(wù)處理完后響應(yīng)一個(gè)狀態(tài),然后再提示給用戶(hù),可以彈出顯示,或者在底部狀態(tài)來(lái)加個(gè)有顏色的提醒,都可以。(如果理解成消息隊(duì)列的處理方式也可以,在云計(jì)算業(yè)務(wù)中利用消息隊(duì)列處理各種服務(wù)器請(qǐng)求也是類(lèi)似道理)
那么,這樣的程序設(shè)計(jì)對(duì)于軟件自身來(lái)說(shuō)響應(yīng)速度就更快了,用戶(hù)的體驗(yàn)也就更高了~
?
?
總結(jié)
以上是生活随笔為你收集整理的我们为何要使用多线程,它有什么优点?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做梦梦到高考分数准吗
- 下一篇: 梦到前任妈妈来我家什么预兆