更新時(shí)間:2021-07-09 16:03:06 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1954次
多線程是一種同時(shí)執(zhí)行多個(gè)線程的技術(shù),它不允許進(jìn)程或操作系統(tǒng)生成計(jì)算機(jī)中運(yùn)行的程序的多個(gè)副本,而是在不創(chuàng)建程序多個(gè)副本的情況下,同時(shí)管理多個(gè)用戶或同一用戶的多個(gè)請(qǐng)求。
線程是輕量級(jí)進(jìn)程,是處理的最小單元,同時(shí)運(yùn)行多個(gè)線程稱為多線程。因此,基本上,這是一種由多個(gè)處理器使用單個(gè)代碼集的方法。
1.為了理解多線程,需要理解兩個(gè)術(shù)語。
(1)線程:線程是進(jìn)程的獨(dú)立或基本單元。
(2)進(jìn)程:正在執(zhí)行的程序稱為進(jìn)程,一個(gè)進(jìn)程中存在多個(gè)線程。
2.多線程中的執(zhí)行是并發(fā)的和并行的。
(1)并發(fā)執(zhí)行:如果處理器可以在單個(gè)處理器上的多線程進(jìn)程中的線程之間切換執(zhí)行資源,則可以說它是并發(fā)執(zhí)行。
(2)并行執(zhí)行:當(dāng)進(jìn)程中的每個(gè)線程可以在同一多線程進(jìn)程中同時(shí)在單獨(dú)的處理器上運(yùn)行時(shí),則被稱為并行執(zhí)行。
用戶級(jí)線程:它們由用戶創(chuàng)建和管理,它們用于應(yīng)用程序級(jí)別,操作系統(tǒng)不參與。一個(gè)很好的例子是當(dāng)我們?cè)贘ava,C#,Python等程序設(shè)計(jì)中使用線程時(shí),我們使用用戶線程。
每個(gè)線程中都包含一些獨(dú)特的數(shù)據(jù),有助于識(shí)別它們,例如:
程序計(jì)數(shù)器:程序計(jì)數(shù)器負(fù)責(zé)跟蹤指令并告訴下一條指令要執(zhí)行。
寄存器:系統(tǒng)寄存器用于跟蹤線程的當(dāng)前工作變量。
堆棧:它包含線程執(zhí)行的歷史記錄。
內(nèi)核級(jí)線程:它們由操作系統(tǒng)實(shí)現(xiàn)和支持,它們通常比用戶線程花費(fèi)更多的時(shí)間來執(zhí)行,例如Window Solaris。
多線程模型分為三種類型
多對(duì)多:任意數(shù)量的用戶線程都可以與相等或更少數(shù)量的內(nèi)核線程進(jìn)行交互。

多對(duì)一:它將許多用戶級(jí)線程映射到一個(gè)內(nèi)核級(jí)線程。

一對(duì)一:用戶級(jí)線程和內(nèi)核級(jí)線程之間的關(guān)系是一對(duì)一的。

多線程是在系統(tǒng)或程序中引入并行性的一種方式,因此,您可以在看到并行路徑的任何地方(兩個(gè)線程都不依賴于彼此的結(jié)果)使用它,以使其變得快速,容易。
大數(shù)據(jù)的處理可以分為多個(gè)部分,并使用多個(gè)線程來完成。
涉及諸如驗(yàn)證和保存,產(chǎn)生和消費(fèi),讀取和驗(yàn)證之類的機(jī)制的應(yīng)用程序是在多個(gè)線程中完成的。這種應(yīng)用程序的例子很少,例如網(wǎng)上銀行,充值等。
它可用于制作不同元素在不同線程上運(yùn)行的游戲。
在Android中,它用于訪問在后臺(tái)線程中運(yùn)行的API,以防止應(yīng)用程序停止運(yùn)行。
在Web應(yīng)用程序中,當(dāng)您希望您的應(yīng)用程序獲得異步調(diào)用并異步執(zhí)行時(shí)使用它。
經(jīng)濟(jì):因?yàn)樗鼈児蚕硐嗤奶幚砥髻Y源,因此非常經(jīng)濟(jì)。創(chuàng)建線程所需的時(shí)間更少。
資源共享:它允許線程共享資源,例如數(shù)據(jù),內(nèi)存,文件等。因此,應(yīng)用程序可以在同一地址空間內(nèi)具有多個(gè)線程。
響應(yīng)速度:它提高了對(duì)用戶的響應(yīng)速度,因?yàn)樗试S程序繼續(xù)運(yùn)行,即使它的一部分正在執(zhí)行冗長的操作或被阻塞。
可擴(kuò)展性:它增加了多CPU機(jī)器上的并行性,它增強(qiáng)了多處理器計(jì)算機(jī)的性能,
這樣可以更好地利用CPU資源。
增加并行度
充分利用可用的CPU資源。
改善應(yīng)用程序的響應(yīng)能力并與用戶進(jìn)行更好的交互。
在計(jì)算機(jī)世界中,當(dāng)我們談?wù)摬⑿行詴r(shí),我們談?wù)摰氖嵌嗑€程。實(shí)現(xiàn)多線程是相當(dāng)有效和直接的,因?yàn)樗构ぷ鞲阋耍幚懋惒降奶亻L使其獨(dú)樹一幟。因此,它是有需求的,并且是值得學(xué)習(xí)的技術(shù)。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"什么是多線程",希望對(duì)大家有幫助,想了解更多可查看Java多線程編程,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)