黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java并發編程學習筆記

Java并發編程學習筆記

更新時間:2019-12-23 15:11:41 來源:動力節點 瀏覽2726次

Java并發編程一直是Java程序員必須懂但又是很難懂的技術內容。這里不僅僅是指使用簡單的多線程編程,或者使用juc的某個類。當然這些都是并發編程的基本知識,除了使用這些工具以外,Java并發編程中涉及到的技術原理十分豐富。

  于是乎,就誕生了想寫點東西記錄下,以提升理解和對并發編程的認知。為什么需要用到并發?凡事總有好壞兩面,之間的trade-off是什么,也就是說并發編程具有哪些挑戰?以及在進行并發編程時應該了解和掌握的概念是什么?并發編程的三大特性是什么?這篇文章主要以這四個問題來談一談。

  一.為什么要用到并發

  一直以來,硬件的發展極其迅速,也有一個很著名的"摩爾定律",可能會奇怪明明討論的是并發編程為什么會扯到了硬件的發展,這其中的關系應該是多核CPU的發展為并發編程提供的硬件基礎。摩爾定律并不是一種自然法則或者是物理定律,它只是基于認為觀測數據后,對未來的一種預測。按照所預測的速度,我們的計算能力會按照指數級別的速度增長,不久以后會擁有超強的計算能力,正是在暢想未來的時候,2004年,Intel宣布4GHz芯片的計劃推遲到2005年,然后在2004年秋季,Intel宣布徹底取消4GHz的計劃,也就是說摩爾定律的有效性超過了半個世紀戛然而止。但是,聰明的硬件工程師并沒有停止研發的腳步,他們為了進一步提升計算速度,而不是再追求單獨的計算單元,而是將多個計算單元整合到了一起,也就是形成了多核CPU。短短十幾年的時間,家用型CPU,比如Intel i7就可以達到4核心甚至8核心。而專業服務器則通常可以達到幾個獨立的CPU,每一個CPU甚至擁有多達8個以上的內核。因此,摩爾定律似乎在CPU核心擴展上繼續得到體驗。因此,多核的CPU的背景下,催生了并發編程的趨勢,通過 并發編程的形式可以將多核CPU的計算能力發揮到極致,性能得到提升 。

  頂級計算機科學家Donald Ervin Knuth如此評價這種情況:在我看來,這種現象(并發)或多或少是由于硬件設計者無計可施了導致的,他們將摩爾定律的責任推給了軟件開發者。

  另外,在特殊的業務場景下先天的就適合于并發編程。比如在圖像處理領域,一張1024X768像素的圖片,包含達到78萬6千多個像素。即時將所有的像素遍歷一邊都需要很長的時間,面對如此復雜的計算量就需要充分利用多核的計算的能力。又比如當我們在網上購物時,為了提升響應速度,需要拆分,減庫存,生成訂單等等這些操作,就可以進行拆分利用多線程的技術完成。 面對復雜業務模型,并行程序會比串行程序更適應業務需求,而并發編程更能吻合這種業務拆分 。正是因為這些優點,使得多線程技術能夠得到重視,也是一名Java學習者應該掌握的:

  充分利用多核CPU的計算能力;

  方便進行業務拆分,提升應用性能

  二. 并發編程有哪些挑戰

  多線程技術有這么多的好處,難道就沒有一點缺點或者挑戰么,就在任何場景下就一定適用么?很顯然不是。

  2.1 頻繁的上下文切換

  時間片是CPU分配給各個線程的時間,因為時間非常短,所以CPU不斷通過切換線程,讓我們覺得多個線程是同時執行的,時間片一般是幾十毫秒。而每次切換時,需要保存當前的狀態起來,以便能夠進行恢復先前狀態,而這個切換時非常損耗性能,過于頻繁反而無法發揮出多線程編程的優勢。通常減少上下文切換可以采用無鎖并發編程,CAS算法,使用最少的線程和使用協程。

  無鎖并發編程:可以參照concurrentHashMap鎖分段的思想,不同的線程處理不同段的數據,這樣在多線程競爭的條件下,可以減少上下文切換的時間。

  CAS算法:利用Atomic下使用CAS算法來更新數據,使用了樂觀鎖,可以有效的減少一部分不必要的鎖競爭帶來的上下文切換

  使用最少線程:避免創建不需要的線程,比如任務很少,但是創建了很多的線程,這樣會造成大量的線程都處于等待狀態

  協程:在單線程里實現多任務的調度,并在單線程里維持多個任務間的切換

  由于上下文切換也是個相對比較耗時的操作,所以在"java并發編程的藝術"一書中有過一個實驗,并發累加未必會比串行累加速度要快。 可以使用Lmbench3測量上下文切換的時長 vmstat測量上下文切換次數

       以上就是動力節點Java培訓機構小編介紹的“Java并發編程學習筆記”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

       相關文章

  零基礎怎么自學Java,完整版Java學習路線圖

  你還在糾結學Java,是自學還是去培訓班嗎

  一個標準的Java程序員如何進階?

  Java學習路線清單,快速進階Java

  Java編程初學者要如何進階

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 天天摸天天舔 | h肉动漫在线视频无修无遮挡 | 最近中文免费字幕8 | 亚洲黄色免费观看 | 亚洲性在线观看 | 国内精品免费视频精选在线观看 | 91在线公开视频 | 日韩欧美一二三区 | 欧美日韩色视频在线观看 | 黄色在线观看视频网站 | 2020国产成人久久精品 | 丝袜美脚在线 | 一级毛片一级毛片免费毛片 | 久久久久亚洲日日精品 | 久久国产欧美日韩精品 | 亚洲人成网站色7799在线播放 | 一级特黄录像播放 | 99精品国产第一福利网站 | 最新欧美精品一区二区三区不卡 | 久久综合狠狠综合久久综合88 | 99视频精品全部国产盗摄视频 | 国产精品1区 2区 3区 | 手机看片1024久久精品你懂的 | 色网在线观看 | 天天干天天摸 | 午夜性刺激在线观看视频 | 成年男女免费视频网站播放 | 亚洲成年网站 | 国产又黄又湿又刺激不卡网站 | 成人18网站 | 天天操bb| 亚洲第一成网站 | 伊人久久国产免费观看视频 | 在线观看国产欧美 | 美女一级毛片毛片在线播放 | 99免费 | 香蕉网站在线观看 | 国产视频一区二区在线观看 | 国产一卡二卡≡卡四卡无人 | 日本三级一区二区 | 黄色片视频网站 |