真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

掌握系列之并發(fā)編程-1.并發(fā)基礎(chǔ)

掌握高并發(fā)、高可用架構(gòu)

第二課 并發(fā)編程

從本課開(kāi)始學(xué)習(xí)并發(fā)編程的內(nèi)容。主要介紹并發(fā)編程的基礎(chǔ)知識(shí)、鎖、內(nèi)存模型、線程池、各種并發(fā)容器的使用。

成都創(chuàng)新互聯(lián)自2013年起,先為陸豐等服務(wù)建站,陸豐等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為陸豐企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

第一節(jié) 并發(fā)基礎(chǔ)

并發(fā)編程 并發(fā)基礎(chǔ) 進(jìn)程 線程 線程通信

系統(tǒng)、包括操作系統(tǒng)的運(yùn)行是以CPU為核心的,各種數(shù)據(jù)操作都是在CPU中進(jìn)行的。所以要學(xué)習(xí)并發(fā)編程,必須要搞清楚和CPU的關(guān)系。

CPU簡(jiǎn)介

經(jīng)常說(shuō)CPU是4核8線程的,這個(gè)的意思是4個(gè)物理核心,每個(gè)物理核心虛擬出2個(gè)虛擬核心,也就是8個(gè)虛擬核心 。每個(gè)虛擬核心在一個(gè)時(shí)刻只能運(yùn)行一個(gè)線程。

進(jìn)程和線程

進(jìn)程的定義:程序被載入內(nèi)存并開(kāi)始準(zhǔn)備執(zhí)行,它就是一個(gè)進(jìn)程,也就是說(shuō)進(jìn)程是執(zhí)行中的程序代碼。進(jìn)程是資源分配和程序調(diào)度運(yùn)行的基本單位。

線程的定義:?jiǎn)蝹€(gè)進(jìn)程中執(zhí)行每個(gè)任務(wù)就是一個(gè)線程。線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位。

一個(gè)線程只能屬于一個(gè)進(jìn)程,一個(gè)進(jìn)程可以擁有多個(gè)線程。多線程處理就是允許一個(gè)進(jìn)程中在同一時(shí)刻執(zhí)行多個(gè)任務(wù)(線程)。

對(duì)比進(jìn)程線程
定義 進(jìn)程是程序?qū)嶓w的運(yùn)行過(guò)程,是系統(tǒng)資源分配和調(diào)度運(yùn)行的基本單位 線程是進(jìn)程執(zhí)行任務(wù)的最小調(diào)度單位
系統(tǒng)開(kāi)銷 創(chuàng)建切換開(kāi)銷大,資源要重新分配和回收 僅保存少量寄存器的內(nèi)容,開(kāi)銷小,并且在進(jìn)程的地址空間執(zhí)行代碼
占有資源 擁有分配的所有資源 基本不占資源,僅有其運(yùn)行不可少的資源(程序計(jì)數(shù)器、一組寄存器和棧)
安全性 進(jìn)程間相互獨(dú)立 線程間共享進(jìn)程的資源,可以互相通信和影響

掌握系列之并發(fā)編程-1.并發(fā)基礎(chǔ)

CPU線程調(diào)度

大多數(shù)的應(yīng)用程序?yàn)榱颂岣咂鋱?zhí)行效率,而采用多線程模式。充分利用CPU的核心來(lái)實(shí)現(xiàn)高效率運(yùn)行。那是不是最大只能同時(shí)開(kāi)啟8個(gè)線程呢?如果想開(kāi)啟更多線程,可以嗎?CPU內(nèi)部該如何處理呢?

對(duì)于4核8線程的CPU來(lái)說(shuō),如果只起8個(gè)線程,每個(gè)虛擬內(nèi)核都各自執(zhí)行一個(gè)線程,這是最簡(jiǎn)單的高效率利用方式。但是在實(shí)際使用時(shí)這是不可能的。首先,計(jì)算機(jī)硬件必須有操作才能運(yùn)行,而操作系統(tǒng)啟動(dòng)后在運(yùn)行過(guò)程中必不可少的要執(zhí)行各種任務(wù);其次,個(gè)人運(yùn)行的程序也是要啟動(dòng)線程來(lái)執(zhí)行各種各樣的任務(wù)調(diào)度。所以,對(duì)于一臺(tái)電腦,不管是個(gè)人PC還是服務(wù)器,其真正運(yùn)行的線程肯定是多于CPU的內(nèi)核數(shù)的,那它是如何保證各個(gè)任務(wù)流暢運(yùn)行的呢?

這就是CPU的線程調(diào)度。采用一定的算法把CPU的使用權(quán)合理的分配給線程,使得任務(wù)執(zhí)行。

有兩種調(diào)度模型,分時(shí)調(diào)度搶占式調(diào)度。

分時(shí)調(diào)度模型是指讓所有的線程輪流獲得CPU的使用權(quán),并且平均分配每個(gè)線程占用的CPU時(shí)間片。

搶占式調(diào)度模型是指優(yōu)先讓運(yùn)行池中優(yōu)先級(jí)最高的線程占用CPU,如果優(yōu)先級(jí)相同,則隨機(jī)選擇一個(gè)線程來(lái)占用CPU。處于運(yùn)行中狀態(tài)的線程會(huì)一直運(yùn)行,直到它不得不放棄CPU。

JVM采用搶占式調(diào)度。

一個(gè)線程會(huì)因?yàn)橐韵略蚨艞塁PU:

  1. JVM使其暫時(shí)放棄CPU,轉(zhuǎn)入就緒狀態(tài)
  2. 阻塞
  3. 執(zhí)行結(jié)束
串行、并行和并發(fā)

串行:是指多個(gè)任務(wù),一個(gè)執(zhí)行完接著一個(gè)

并行:每個(gè)核心執(zhí)行一個(gè)任務(wù),同一時(shí)刻多個(gè)任務(wù)同時(shí)執(zhí)行

并發(fā):多個(gè)任務(wù)在單核心上執(zhí)行,同一時(shí)刻只有一個(gè)任務(wù),系統(tǒng)不停的切換任務(wù),看起來(lái)像是同時(shí)執(zhí)行,實(shí)際上是不停的切換

多核下的線程數(shù)量選擇

對(duì)于計(jì)算密集型任務(wù),線程數(shù)量不宜過(guò)多,因?yàn)楸旧砣蝿?wù)就是高CPU利用率,線程多的話,會(huì)因?yàn)樯舷挛那袚Q而浪費(fèi)資源。對(duì)于IO密集型任務(wù),比如磁盤IO和網(wǎng)絡(luò)IO,因?yàn)槿蝿?wù)是低CPU利用率,所以可以適當(dāng)多開(kāi)線程。


新聞標(biāo)題:掌握系列之并發(fā)編程-1.并發(fā)基礎(chǔ)
新聞來(lái)源:http://weahome.cn/article/pdppss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部