日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java并发排序_Java并发(三):重排序

發布時間:2023/12/19 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java并发排序_Java并发(三):重排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在執行程序時為了提升性能,提升并行度,編譯器和處理器經常會對指令作重排序。重排序分三種類型:java

編譯器優化的重排序。編譯器在不改變單線程程序語義的前提下,能夠從新安排語句的執行順序。

指令級并行的重排序?,F代處理器采用了指令級并行技術(Instruction-Level Parallelism, ILP)來將多條指令重疊執行。若是不存在數據依賴性,處理器能夠改變語句對應機器指令的執行順序。

內存系統的重排序。因為處理器使用緩存和讀/寫緩沖區,這使得加載和存儲操做看上去多是在亂序執行。

問題:重排序均可能會致使多線程程序出現內存可見性問題程序員

1)編譯器優化的重排序。編譯器在不改變單線程程序語義的前提下,能夠從新安排語句的執行順序。緩存

2)指令級并行的重排序。處理器多條指令重疊執行,改變語句對應機器指令的執行順序(處理器重排)多線程

3)內存系統的重排序。處理器使用緩存和讀/寫緩沖區,這使得加載和存儲操做看上去多是在亂序執行(處理器重排)性能

舉例:處理器對內存的讀/寫操做的執行順序,不必定與內存實際發生的讀/寫操做順序一致,致使重排序致使內存可見性問題優化

(處理器使用寫緩沖區來臨時保存向內存寫入的數據:避免因為處理器停頓下來等待向內存寫入數據而產生的延遲spa

以批處理的方式刷新寫緩沖區,以及合并寫緩沖區中對同一內存地址的屢次寫,能夠減小對內存總線的占用)線程

假設處理器A和處理器B按程序的順序并行執行內存訪問,最終卻可能獲得x = y = 0的結果3d

第一步執行A1 B1blog

第二步執行A2 B2,此時已獲得x=b=0 y=a=0

第三步執行A3 B3

執行完A3,A1才算執行完,A1 A2重排序了

JMM經過禁止特定類型的編譯器重排序和處理器重排序,為程序員提供一致的內存可見性保證

JMM的編譯器重排序規則會禁止特定類型的編譯器重排序

java編譯器在生成指令序列時,插入特定類型的內存屏障指令來禁止特定類型的處理器重排序

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java并发排序_Java并发(三):重排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。