成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java高并發(fā)繼續(xù)學(xué)習(xí)part1_A-創(chuàng)新互聯(lián)

本系列博客筆記源于煉數(shù)成金教程而寫的筆記

在洛寧等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營(yíng)銷型網(wǎng)站,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),洛寧網(wǎng)站建設(shè)費(fèi)用合理。

開始前必須清楚知道以下幾點(diǎn):
一、關(guān)于高并發(fā)的幾個(gè)重要概念
1.1 線程是什么:是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位,在Java中線程是提供給開發(fā)者的實(shí)現(xiàn)并發(fā)機(jī)制的一種有效手段,而多個(gè)線程可以產(chǎn)生于一個(gè)進(jìn)程。即線程是進(jìn)程的一個(gè)單位
1.2 進(jìn)程是什么:進(jìn)程是系統(tǒng)在執(zhí)行某個(gè)程序關(guān)于數(shù)據(jù)集合上的一次活動(dòng),是計(jì)算機(jī)在進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)的基本執(zhí)行實(shí)體。
1.3 同步、異步概念:同步、異步即是方法調(diào)用時(shí)線程或者是進(jìn)程在執(zhí)行時(shí)的方式,那么有什么不同之處?同步:調(diào)用方法時(shí)等待方法的返回。異步:調(diào)用方法會(huì)即刻返回,但是這里返回并不是指方法執(zhí)行任務(wù)已經(jīng)完成,異步的機(jī)制就是調(diào)用的同時(shí)在后臺(tái)另起線程繼續(xù)執(zhí)行任務(wù)。
Java 高并發(fā)  繼續(xù)學(xué)習(xí) part1_A

1.4 并行與并發(fā):
并發(fā)與并行在外在表象來(lái)看是一樣的。但是實(shí)際執(zhí)行的步驟并非一樣,并行是指兩個(gè)任務(wù)同時(shí)進(jìn)行,而并發(fā)是指兩個(gè)任務(wù),一會(huì)兒執(zhí)行A任務(wù),一會(huì)兒執(zhí)行B任務(wù)。ps: 所以這里如果是單核(也就是單個(gè)CPU)是不能做并行任務(wù)的,只能做并發(fā)任務(wù)。
Java 高并發(fā)  繼續(xù)學(xué)習(xí) part1_A

1.5 臨界區(qū):臨界區(qū)用來(lái)表示一種公共的資源(或者說(shuō)是公共的數(shù)據(jù)),可以被多個(gè)線程使用,但是每一次只能有一個(gè)線程使用它,一旦這個(gè)臨界區(qū)被占用,其他線程將無(wú)法使用這個(gè)資源,要想使用就必須等待。
Java 高并發(fā)  繼續(xù)學(xué)習(xí) part1_A

1.6 阻塞與非阻塞
阻塞和非阻塞通常形容多線程之間的相互影響。比如一個(gè)線程占用了臨界區(qū)資源,那么其他線程要想得到這個(gè)資源就必須在這個(gè)臨界區(qū)中進(jìn)行等待,等待會(huì)導(dǎo)致線程掛起,這種情況就是阻塞。同時(shí)如果占用這個(gè)資源的線程一直不愿意釋放這個(gè)資源,那么其他阻塞在這個(gè)臨界區(qū)上的線程將都不能工作。
非阻塞是允許多個(gè)線程同時(shí)進(jìn)入這個(gè)臨界區(qū),但是這樣一來(lái)并不能保證共享數(shù)據(jù)的安全。
1.7 死鎖、饑餓、活鎖
死鎖:通常是指兩個(gè)或者兩個(gè)以上的進(jìn)程在執(zhí)行過程中,由于競(jìng)爭(zhēng)資源或者由于彼此通訊而造成的一種阻塞現(xiàn)象,若此間無(wú)外力干涉,它們將都無(wú)法繼續(xù)執(zhí)行下去,此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生死鎖。

雖然死鎖是不好的現(xiàn)象,但是它是一個(gè)靜態(tài)的問題,一旦發(fā)生死鎖,進(jìn)程被卡,cpu的占有率也是0,它并不會(huì)占用住CPU,它會(huì)被調(diào)用出去。相對(duì)于活鎖來(lái)說(shuō)比較好發(fā)現(xiàn)和分析。
活鎖:是指事務(wù)A可以使用資源,但是它在檢測(cè)到其他事務(wù)也將執(zhí)行時(shí)會(huì)讓其他事務(wù)先使用此資源,事務(wù)B可以使用此資源,但是它也檢測(cè)到其他事務(wù)將執(zhí)行所以也讓其他事務(wù)先使用此資源,于是兩者都處于謙讓狀態(tài),都無(wú)法使用此資源。
(舉個(gè)例子,就如同你在街上遇到個(gè)人,剛好他朝著你的反方向走,與你正面碰到,你們都想讓彼此過去。你往左邊移,他也往左邊移,兩人還是無(wú)法過去。這時(shí)你往右邊移,他也往右邊移,如此循環(huán)下去。

一個(gè)線程在取得了一個(gè)資源時(shí),發(fā)現(xiàn)其他線程也想到這個(gè)資源,因?yàn)闆]有得到所有的資源,為了避免死鎖把自己持有的資源都放棄掉。如果另外一個(gè)線程也做了同樣的事情,他們需要相同的資源,比如A持有a資源,B持有b資源,放棄了資源以后,A又獲得了b資源,B又獲得了a資源,如此反復(fù),則發(fā)生了活鎖。

活鎖會(huì)比死鎖更難發(fā)現(xiàn),因?yàn)榛铈i是一個(gè)動(dòng)態(tài)的過程。)ps:原文抄自煉數(shù)成金?。?!

饑餓:是指某一個(gè)或者多個(gè)線程因?yàn)榉N種原因無(wú)法獲取得到所需要的資源,導(dǎo)致一直無(wú)法執(zhí)行。

1.8 并發(fā)級(jí)別:阻塞、非阻塞(分為無(wú)障礙、無(wú)鎖、無(wú)等待)

1.8.1 阻塞:上文講到當(dāng)一個(gè)線程進(jìn)入臨界區(qū)后,其他線程必須等待,此狀態(tài)稱為阻塞

1.8.2 無(wú)障礙
無(wú)障礙時(shí)一種最弱的非阻塞調(diào)度
自由出入臨界區(qū)
無(wú)競(jìng)爭(zhēng)時(shí),有限步內(nèi)完成操作
有競(jìng)爭(zhēng)時(shí),回滾數(shù)據(jù)
和非阻塞調(diào)度相比呢,阻塞調(diào)度是一種悲觀的策略,它會(huì)認(rèn)為說(shuō)一起修改數(shù)據(jù)是很有可能把數(shù)據(jù)改壞的。而非阻塞調(diào)度呢,是一種樂觀的策略,它認(rèn)為大家修改數(shù)據(jù)未必把數(shù)據(jù)改壞。但是它是一種寬進(jìn)嚴(yán)出的策略,當(dāng)它發(fā)現(xiàn)一個(gè)進(jìn)程在臨界區(qū)內(nèi)發(fā)生了數(shù)據(jù)競(jìng)爭(zhēng),產(chǎn)生了沖突,那么無(wú)障礙的調(diào)度方式則會(huì)回滾這條數(shù)據(jù)。(上文提到即共享數(shù)據(jù)不安全)

在這個(gè)無(wú)障礙的調(diào)度方式當(dāng)中,所有的線程都相當(dāng)于在拿去一個(gè)系統(tǒng)當(dāng)前的一個(gè)快照。他們一直會(huì)嘗試拿去的快照是有效的為止。
1.8.3 無(wú)鎖
是無(wú)障礙的
保證有一個(gè)線程可以勝出
與無(wú)障礙相比,無(wú)障礙并不保證有競(jìng)爭(zhēng)時(shí)一定能完成操作,因?yàn)槿绻l(fā)現(xiàn)每次操作都會(huì)產(chǎn)生沖突,那它則會(huì)不停地嘗試。如果臨界區(qū)內(nèi)的線程互相干擾,則會(huì)導(dǎo)致所有的線程會(huì)卡死在臨界區(qū),那么系統(tǒng)性能則會(huì)有很大的影響。
同時(shí)無(wú)鎖增加了一個(gè)新的條件,保證每次競(jìng)爭(zhēng)有一個(gè)線程可以勝出,則解決了無(wú)障礙的問題。至少保證了所有線程都順利執(zhí)行下去。
無(wú)鎖在Java中很常見
while (!atomicVar.compareAndSet(localVar, localVar+1))
{
localVar = atomicVar.get();
}
1.8.4 無(wú)等待
無(wú)鎖的
要求所有的線程都必須在有限步內(nèi)完成
無(wú)饑餓的
首先無(wú)等待的前提是無(wú)鎖的基礎(chǔ)上的,無(wú)鎖它只保證了臨界區(qū)肯定有進(jìn)也有出,但是如果進(jìn)的優(yōu)先級(jí)都很高,那么臨界區(qū)內(nèi)的某些優(yōu)先級(jí)低的線程可能發(fā)生饑餓,一直出不了臨界區(qū)。那么無(wú)等待解決了這個(gè)問題,它保證所有的線程都必須在有限步內(nèi)完成,自然是無(wú)饑餓的。
無(wú)等待是并行的最高級(jí)別,它能使這個(gè)系統(tǒng)達(dá)到最優(yōu)狀態(tài)。
無(wú)等待的典型案例:

如果只有讀線程,沒有線線程,那么這個(gè)則必然是無(wú)等待的。

如果既有讀線程又有寫線程,而每個(gè)寫線程之前,都把數(shù)據(jù)拷貝一份副本,然后修改這個(gè)副本,而不是修改原始數(shù)據(jù),因?yàn)樾薷母北?,則沒有沖突,那么這個(gè)修改的過程也是無(wú)等待的。最后需要做同步的只是將寫完的數(shù)據(jù)覆蓋原始數(shù)據(jù)。

由于無(wú)等待要求比較高,實(shí)現(xiàn)起來(lái)比較困難,所以無(wú)鎖使用得會(huì)更加廣泛一些。PS:抄自練數(shù)成金

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱:Java高并發(fā)繼續(xù)學(xué)習(xí)part1_A-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article40/dhdoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、做網(wǎng)站、搜索引擎優(yōu)化、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
华阴市| 金秀| 遂昌县| 临潭县| 兰坪| 扎囊县| 革吉县| 曲靖市| 西昌市| 邹平县| 承德县| 北碚区| 嵊泗县| 凤庆县| 长乐市| 榆中县| 巨鹿县| 澄迈县| 迭部县| 龙游县| 云浮市| 曲麻莱县| 清新县| 吉隆县| 斗六市| 山西省| 毕节市| 台中市| 大关县| 通海县| 错那县| 开平市| 新沂市| 扎鲁特旗| 长治县| 新晃| 甘肃省| 阳新县| 隆尧县| 耒阳市| 阿荣旗|