亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

suxier / 2218人閱讀

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

Chapter1

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

1.1何去何從的并行計算

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

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

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

1.1.3 柳暗花明:不斷前進
單核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í)行一個指令,只能是并發(fā)。
1.2.3臨界區(qū)

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

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

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

1.3并發(fā)級別

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

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

1.3.4 無等待

1.4 并行的兩個定律

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

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

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

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

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

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

相關(guān)文章

  • 走入并行世界

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

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

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

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

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

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

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

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

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

    everfight 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<