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

資訊專欄INFORMATION COLUMN

java-實(shí)戰(zhàn)java高并發(fā)程序設(shè)計(jì)-ch1走入并行的世界

suxier / 2177人閱讀

摘要:參考何去何從的并行計(jì)算忘記該死的并行并行程序的復(fù)雜性和亂序性,并行程序設(shè)計(jì)十分復(fù)雜??膳碌默F(xiàn)實(shí)摩爾定律的失效單核上的晶體管數(shù)目達(dá)到極限。并發(fā)級別阻塞重入鎖無饑餓兩個(gè)線程優(yōu)先級不同,低優(yōu)先級的可能產(chǎn)生饑餓。

Chapter1

參考:
https://github.com/chengbingh...

1.1何去何從的并行計(jì)算

1.1.1 忘記該死的并行
并行程序的復(fù)雜性和亂序性,并行程序設(shè)計(jì)十分復(fù)雜。
linus:并行程序有兩個(gè)應(yīng)用場景
一個(gè)是圖形處理領(lǐng)域,比如一個(gè)1000萬像素的圖片,用for循環(huán)遍歷十分耗時(shí)。
一個(gè)是服務(wù)端編程,比如淘寶雙十一

并行程序的使用的兩個(gè)考量:
一個(gè)是功能上的,比如jvm 除了main線程還有jit即時(shí)編譯,gc垃圾回收線程,業(yè)務(wù)模型的需要,需要多個(gè)執(zhí)行實(shí)體。
一個(gè)是性能上,獲得更好的性能。

1.1.2可怕的現(xiàn)實(shí):摩爾定律的失效
單核cpu, 上的晶體管數(shù)目達(dá)到極限。

1.1.3 柳暗花明:不斷前進(jìn)
單核cpu===>多核cpu

1.1.4 光明或黑暗
唐納德:摩爾定律的維持由硬件工程師維持,變成軟件工程師來維持。

1.2 必須知道的概念

1.2.1 同步異步
可以理解為,同步,一次方法調(diào)用,會等到返回結(jié)果了再繼續(xù)執(zhí)行,異步是方法調(diào)用后立即返回。

1.2.2 并發(fā)&并行
并發(fā)的最終效果和并行可能一樣,區(qū)別在于,單核cpu,一次只能執(zhí)行一個(gè)指令,只能是并發(fā)。
1.2.3臨界區(qū)

在并行計(jì)算中,臨界區(qū)的資源是保護(hù)對象,避免
1.2.4阻塞和非阻塞

同步和異步,阻塞和非阻塞區(qū)別

1.2.5 死鎖、饑餓、活鎖
死鎖
synchronized 嵌套
lock 不釋放鎖
饑餓
一個(gè)線程無法獲取資源,而一直無法執(zhí)行。(比如線程優(yōu)先級比較低)
活鎖
兩個(gè)線程,都將資源讓給對方,此時(shí),資源在線程間讓來讓去,那么兩個(gè)線程都無法執(zhí)行。

1.3并發(fā)級別

1.3.1 阻塞
synchronized
重入鎖
1.3.2 無饑餓
兩個(gè)線程優(yōu)先級不同,低優(yōu)先級的可能產(chǎn)生饑餓。
1.3.3無障礙
無障礙是大家都隨意操作資源,一旦發(fā)現(xiàn)同時(shí)操作某個(gè)資源了,那么就回滾。 這個(gè)相對于悲觀的阻塞,這個(gè)是樂觀策略

1.3.3 無鎖
不斷嘗試修改資源,可能無限循環(huán),直到嘗試修改資源成功

1.3.4 無等待

1.4 并行的兩個(gè)定律

隨著cpu 個(gè)數(shù)提高,我們可以不斷提高運(yùn)行速度,但是還是有限制的。

1.5 java 內(nèi)存模型(JMM)

1.5.1 原子性
原子性指的是一個(gè)操作在執(zhí)行過程中不能被中斷。
中斷的例子:在一個(gè)32位的虛擬機(jī)中, 每次從內(nèi)存中操作的大小都是32位的, 現(xiàn)在兩個(gè)線程同時(shí)給一個(gè)64為的long型變量賦值。 一個(gè)賦值為1億,一個(gè)賦值為2億, 最終賦值的結(jié)果可能既不是1億,也不是2億。而是一個(gè)莫名其妙的數(shù)字。
valiate 關(guān)鍵字可以避免這個(gè)情況

1.5.2 可見性
一個(gè)線程修改了共享變量的值,其它的線程能否立知道這個(gè)改變。
cpu優(yōu)化:
并發(fā)情況下, 可能是一個(gè)cpu1 修改一個(gè)變量后,將它放到緩存cache中,這時(shí)另外一cpu2中的線程修改了這個(gè)共享變量,它也放到緩存中cache中, 這樣cpu1里的線程由于還是從緩存中取,所以不知道這個(gè)修改。
硬件優(yōu)化
有些內(nèi)存讀寫會放到一個(gè)硬件的隊(duì)列中,不會立即操作。
指令重排
1.5.3 有序性
處理器cpu 出現(xiàn)指令重排
常見的Java運(yùn)行時(shí)環(huán)境的JIT編譯器也會做指令重排序,即生成的機(jī)器指令與字節(jié)碼指令順序不一致。

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

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

相關(guān)文章

  • 走入并行世界

    摘要:無鎖無鎖的并行都是無障礙的,但不同的是無鎖的并發(fā)保證了必然有一個(gè)線程能夠在有限步驟內(nèi)離開臨界區(qū)。有關(guān)并行的兩個(gè)重要定律未完待續(xù)實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)第一章走入并行世界讀書筆記歡迎加入咖啡館的春天。 必須知道的幾個(gè)概念 同步(Synchronous)和異步(Asynchronous) 同步方法調(diào)用一旦開始,調(diào)用者必須等待方法調(diào)用返回后才能繼續(xù)后續(xù)行為。異步方法調(diào)用更像一個(gè)消息傳遞,一旦開始就...

    Coding01 評論0 收藏0
  • Java并發(fā)程序設(shè)計(jì)》讀書筆記 第一章 走入并行世界

    showImg(https://segmentfault.com/img/bVbeIZ4?w=1949&h=1315);

    paraller 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)---之一

    摘要:開始學(xué)習(xí)也有一段時(shí)間了,一些基礎(chǔ)的書也掃了一遍了。最近慢慢開始看和,后者的話和有類似之處,都是一些編程經(jīng)驗(yàn)的編程的世界里好多的東西都是相同的。這里其實(shí)是對的最佳實(shí)踐,之后該對象已經(jīng)變成一個(gè)過期的引用了,此時(shí)就應(yīng)該清空這個(gè)引用。 開始學(xué)習(xí)java也有一段時(shí)間了,一些基礎(chǔ)的書也掃了一遍了(think in java/core java volume 1)。最近慢慢開始看和,后者的話和有類似...

    chavesgu 評論0 收藏0
  • java-實(shí)戰(zhàn)java并發(fā)程序設(shè)計(jì)-ch2java并行程序基礎(chǔ)

    摘要:所以需要等來確保程序中隱蔽的錯(cuò)誤沒有提示的錯(cuò)誤比如兩個(gè)正數(shù)相加,溢出導(dǎo)致其值為負(fù)數(shù)。并發(fā)下的兩個(gè)線程同時(shí)對一個(gè)對象,每個(gè)線程個(gè)對象,最終結(jié)果可能中有萬個(gè)對象??赡軐ο髠€(gè)數(shù)少于萬可能內(nèi)部結(jié)構(gòu)發(fā)生破壞,程序無法終止,會被大量消耗。 java并行程序基礎(chǔ) 參考:https://github.com/chengbingh... 2.1 有關(guān)線程, 需要知道的事 進(jìn)程是線程的容器線程狀態(tài)圖: s...

    yy13818512006 評論0 收藏0
  • 如何提Java并行程序性能

    摘要:因此將變量存放于獨(dú)立的緩存行中,也有助于變量在多線程訪問是的性能提升實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì),大量的高并發(fā)庫都會采用這種技術(shù)。 在Java程序中,多線程幾乎已經(jīng)無處不在。與單線程相比,多線程程序的設(shè)計(jì)和實(shí)現(xiàn)略微困難,但通過多線程,我們卻可以獲得多核CPU帶來的性能飛躍,從這個(gè)角度說,多線程是一種值得嘗試的技術(shù)。那么如何寫出高效的多線程程序呢? 有關(guān)多線程的誤區(qū):線程越多,性能越好 不少初學(xué)者...

    everfight 評論0 收藏0

發(fā)表評論

0條評論

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