1. gzyueqian
      13352868059

      Java培訓:使用Java線程的并行處理

      更新時間: 2023-03-06 11:39:11來源: 粵嵌教育瀏覽量:7733

        本文以Java線程為例介紹并行處理。所討論的許多挑戰也適用于其他編程語言,如C++或C#。想學習java技術的同學,不妨報個Java培訓班,有明確清晰的學習路線,理論知識+實戰操作,可以獲得快速提升。

        一目了然

        并行編程技術是有效利用多核系統(多核處理器、圖形卡或HPC集群)所必需的。

        內存模型的知識對于開發并行應用程序至關重要。

        不同步的并行內存訪問可能導致錯誤的結果和程序中止。

        線程是應用程序(進程)中的順序執行字符串。應用程序可以由多個并行運行的線程組成。應用程序中的線程共享啟動它們的進程的內存(共享內存)。

        為了創建線程,Java和許多其他語言一樣,提供了thread類。如果開發人員想要創建自己的線程,他們會創建一個從線程派生的類,該類重寫run方法。它包含線程在運行時要執行的程序代碼。啟動線程時,首先創建類的實例,然后調用Start方法。或者,也可以通過實現Runnable接口來創建線程。因此,類不必從線程派生,這為更復雜的程序結構提供了優勢,因為Java不支持多重繼承。對java感興趣的同學可以參加java培訓,你可以學會更多的java新技術。

        避免數據泄露

        如果開發人員反復運行程序,程序偶爾會中止。觸發是所謂的數據競賽,即多個線程訪問同一數據(在本例中為sum變量)并嘗試更改數據的星座。sum變量被實現為64位數據類型(double)。Java的內存模型將64位數據類型實現為非原子的,也就是說,不是線程安全的,因為值的寫入操作分兩步進行,每32位的一半寫入一個步驟。這可能會導致一個線程讀取64位值的狀態,其中前32位值已經被另一個線程更改,但后半部分尚未更改(另請參見Java語言規范[1])。這可以通過將變量標記為易失性來解決。對于標記為volatile(例如double和long)的64位變量,Java運行時環境確保寫入始終是線程安全的,并且其他線程只能看到完全寫入的值(在兩個32位半部分上)。

        但是,程式的結果會在每次執行程式后顯示不同的結果。但未列出1億的正確結果。原因是求和的計算:這是一種所謂的種族條件,也就是說,結果取決于線程執行的時間順序。總和計算由三個部分組成:讀取舊總和,將總和與數組中的相應值相加,然后保存新總和。在多個線程上執行這些操作的時間順序是隨機的,不是確定性的。想對java有更深入的了解,可以參加java培訓,在專業老師的指導下,可以很全面地掌握java最新的相關知識和技能。

        

        關鍵部分同步

        為了解決求和計算中的種族條件問題,Java提供了將方法標記為已同步的方法。這可確保每次只能由一個線程運行它們。所有其他線程都必須等待某個執行者再次退出該方法。

        如果程序再次運行,則會返回可重復的正確結果。但是,兩個線程的運行時間大約為5000 ms,此示例說明了同步會對性能造成很大的影響,因為計算總和時所需的邏輯會變得復雜得多。調用同步方法會在對象上設置鎖,或者在退出該方法時重置鎖。如果方法已經鎖定,則調用線程將被阻塞。因此,除了實際的總和計算之外,本示例還調用此同步機制1億次。java培訓課程結構良好,以正確的順序涵蓋了所有這些基本主題,使你的學習更加輕松。

        在這些條件下,并行計算運行

        多核心系統(多核心處理器、顯示卡或高效能運算(HPC)群集)需要平行程式設計技術。這可以顯著提高性能并縮短復雜應用程序的運行時間。該Java線程示例說明了并行應用程序開發的基本挑戰,并可應用于其他語言,如C++和C#以及圖形卡并行處理等技術。基本設置始終相同:

        該問題必須很好地并行,并且具有最小的順序(非并行)部分。適用于數值模擬方法、神經網絡訓練以及矩陣、張量和向量計算等數學方法。

        要開發并行應用程序,了解存儲模型至關重要,例如數據類型的原子性或可見性(變量在多個線程中的變化是可見的)。

        不同步、并行的內存訪問可能導致錯誤的結果和程序中斷。但任何形式的同步(原子變量,∞成本高昂,降低了并行計算的效率。此外,對程序代碼的生成情況的了解要差得多。

        應盡量減少共享可變數據。最佳選擇是每個線程單獨訪問內存,或對多個線程的數據進行只讀訪問。越來越多的人選擇參加java培訓來開啟自己Java 開發人員的職業人生,這是一個快速有效的學習方式,可以在短時間內掌握java所需的技能,更好地找到工作。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线综合亚洲欧美青青 | 一级a毛一级a做视频在线观看 | 亚洲啪精品视频网站免费 | 在线观看网站深夜免费AV | 亚洲阿v天堂在线 | 婷婷色六月综合缴情 |