成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

3分鐘干貨之多線程有什么用?

meteor199 / 1954人閱讀

摘要:一個(gè)可能在很多人看來很扯淡的一個(gè)問題我會(huì)用多線程就好了,還管它有什么用在我看來,這個(gè)回答更扯淡。但是單核我們還是要應(yīng)用多線程,就是為了防止阻塞。

一個(gè)可能在很多人看來很扯淡的一個(gè)問題:我會(huì)用多線程就好了,還管它有什么用?在我看來,這個(gè)回答更扯淡。所謂"知其然知其所以然","會(huì)用"只是"知其然","為什么用"才是"知其所以然",只有達(dá)到"知其然知其所以然"的程度才可以說是把一個(gè)知識(shí)點(diǎn)運(yùn)用自如。OK,下面說說我對(duì)這個(gè)問題的看法:
1)發(fā)揮多核CPU的優(yōu)勢(shì)
隨著工業(yè)的進(jìn)步,現(xiàn)在的筆記本、臺(tái)式機(jī)乃至商用的應(yīng)用服務(wù)器至少也都是雙核的,4核、8核甚至16核的也都不少見,如果是單線程的程序,那么在雙核CPU上就浪費(fèi)了50%,在4核CPU上就浪費(fèi)了75%。單核CPU上所謂的"多線程"那是假的多線程,同一時(shí)間處理器只會(huì)處理一段邏輯,只不過線程之間切換得比較快,看著像多個(gè)線程"同時(shí)"運(yùn)行罷了。多核CPU上的多線程才是真正的多線程,它能讓你的多段邏輯同時(shí)工作,多線程,可以真正發(fā)揮出多核CPU的優(yōu)勢(shì)來,達(dá)到充分利用CPU的目的。

2)防止阻塞
從程序運(yùn)行效率的角度來看,單核CPU不但不會(huì)發(fā)揮出多線程的優(yōu)勢(shì),反而會(huì)因?yàn)樵趩魏薈PU上運(yùn)行多線程導(dǎo)致線程上下文的切換,而降低程序整體的效率。但是單核CPU我們還是要應(yīng)用多線程,就是為了防止阻塞。試想,如果單核CPU使用單線程,那么只要這個(gè)線程阻塞了,比方說遠(yuǎn)程讀取某個(gè)數(shù)據(jù)吧,對(duì)端遲遲未返回又沒有設(shè)置超時(shí)時(shí)間,那么你的整個(gè)程序在數(shù)據(jù)返回回來之前就停止運(yùn)行了。多線程可以防止這個(gè)問題,多條線程同時(shí)運(yùn)行,哪怕一條線程的代碼執(zhí)行讀取數(shù)據(jù)阻塞,也不會(huì)影響其它任務(wù)的執(zhí)行。

3)便于建模
這是另外一個(gè)沒有這么明顯的優(yōu)點(diǎn)了。假設(shè)有一個(gè)大的任務(wù)A,單線程編程,那么就要考慮很多,建立整個(gè)程序模型比較麻煩。但是如果把這個(gè)大的任務(wù)A分解成幾個(gè)小任務(wù),任務(wù)B、任務(wù)C、任務(wù)D,分別建立程序模型,并通過多線程分別運(yùn)行這幾個(gè)任務(wù),那就簡(jiǎn)單很多了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74491.html

相關(guān)文章

  • Python爬蟲之多線程下載程序類電子書

    摘要:其頁面如下那么我們是否可以通過來制作爬蟲來幫助我們實(shí)現(xiàn)自動(dòng)下載這些電子書呢答案是筆者在空閑時(shí)間寫了一個(gè)爬蟲,主要利用函數(shù)和多線程來下載這些電子書。 ??近段時(shí)間,筆者發(fā)現(xiàn)一個(gè)神奇的網(wǎng)站:http://www.allitebooks.com/ ,該網(wǎng)站提供了大量免費(fèi)的編程方面的電子書,是技術(shù)愛好者們的福音。其頁面如下: showImg(https://segmentfault.com/i...

    walterrwu 評(píng)論0 收藏0
  • 「碼個(gè)蛋」2017年200篇精選干貨集合

    摘要:讓你收獲滿滿碼個(gè)蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計(jì)篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術(shù)文章,為了讓大家在家也能好好學(xué)習(xí),特此花了幾個(gè)小時(shí)整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個(gè)蛋從2017年02月20...

    wangtdgoodluck 評(píng)論0 收藏0
  • 3分鐘干貨之詳解線程

    線程池通過復(fù)用線程,避免線程頻繁創(chuàng)建和銷毀。Java的Executors工具類中,提供了5種類型線程池的創(chuàng)建方法,它們的特點(diǎn)和適用場(chǎng)景如下: 第1種是:固定大小線程池,特點(diǎn)是線程數(shù)固定,使用無界隊(duì)列,適用于任務(wù)數(shù)量不均勻的場(chǎng)景、對(duì)內(nèi)存壓力不敏感,但系統(tǒng)負(fù)載比較敏感的場(chǎng)景; 第2種是:Cached線程池,特點(diǎn)是不限制線程數(shù),適用于要求低延遲的短期任務(wù)場(chǎng)景; 第3種是:?jiǎn)尉€程線程池,也就是一個(gè)線程的固...

    niceforbear 評(píng)論0 收藏0
  • 3分鐘干貨之詳解線程池執(zhí)行流程

    摘要:最終也是通過執(zhí)行的。如果隊(duì)列已經(jīng)滿了,則判斷是否達(dá)到了線程池設(shè)置的最大線程數(shù),如果沒有達(dá)到,就創(chuàng)建新線程來執(zhí)行任務(wù)。如果已經(jīng)達(dá)到了最大線程數(shù),則執(zhí)行指定的拒絕策略。這里需要注意隊(duì)列的判斷與最大線程數(shù)判斷的順序,不要搞反。 我們向線程提交任務(wù)時(shí)可以使用Execute和Submit,區(qū)別就是Submit可以返回一個(gè)Future對(duì)象,通過Future對(duì)象可以了解任務(wù)執(zhí)行情況,可以取消任務(wù)的執(zhí)...

    ephererid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<