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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java高級程序員必備的內容知識

Java高級程序員必備的內容知識

更新時間:2019-12-26 09:52:06 來源:動力節點 瀏覽3644次

一段時間沒有回顧多線程相關知識了,雖然工作中會用到一些多線程的內容,但都偏向于基礎,今天重讀多線程相關內容,發現有些東西還是需要注意下。這些一般是面試高頻問題奧。

  了解并發的內幕是一個高級程序員不可缺少的課程

  Java內存模型

  注意,Java內存模型(JMM)和JVM運行時數據區不是同一個概念,還有一個概念是Java對象模型下次可以單獨拿出來說。

  JMM都是圍繞著原子性,可見性,有序性來講的

  JMM定義了JVM如何與計算機的內存進行交互

  線程對變量的所有操作都需要在工作內存中完成,不可直接操作主內存。

Java高級程序員必備的內容知識

  內存間的交互操作:

  • Lock,Unlock 主內存
  • Read,Write 主內存
  • Load,Store 工作內存的變量
  • Use,Assign 工作內存的變量

  Volatile

  Volatile可以說是Java虛擬機內提供的最輕量級同步機制,其只保證,可見性與有序性,不保證原子性。

  可見性:當一條線程修改了這個變量的值,新值對于其他線程來說是可以立刻得知的,另外兩個可以實現可見性的關鍵字:Synchronized和final

  有序性:如果再本線程內觀察,所有的操作都是有序的,如果再一個線程中觀察另外一個線程,那么所有的操作都是無序的。

  Java與線程

  并發不一定依賴多線程,如PHP中常見的多進程并發。Java的Thread類所有關鍵方法都是聲明為Native的,所以Java并沒有自己實現線程。

  實現線程的三種方式:使用內核線程實現,使用用戶線程實現,和使用用戶線程加更加輕量級進程實現。

  內核線程實現(KLT,Kernel-Level Thread)。程序一般不會直接使用內核線程,而是使用內核線程的一種高級接口,輕量級進程(LWP,Light Weight Process,LWP),先有內核線程,才能有輕量級進程。

  缺點:各種線程操作,如創建,析構,及同步需要進行系統調用,而系統調用的代價比較高,需要在用戶態和內核態中來回切換。消耗內核資源,一個系統支持輕量級的進程數量是有限制的。

  用戶線程實現,廣義上說,一個線程只要不是內核線程,那就可以任務是用戶線程。用戶線程完全在用戶態完成,不用內核的幫助,可以支持更大的線程數量。

  缺點:沒有內核支持,各種操作都比較復雜。現在基本棄用了。

  用戶線程 + 輕量級進程,綜合兩者的有點,用戶進程與輕量級進程數量比是不定的。

  線程調度

  協同式調度:好處是實現簡單,切換操作對線程自己是可知的,沒有線程同步的問題,線程把自己的事情干完之后才進行線程切換。

  缺點:如果程序編寫不穩定,那么系統不可控制。一個進程堅持不讓出CPU執行實現,就會導致系統崩潰。

  搶占式調度(Java默認調度):每個線程由系統來分配執行和弦,線程的切換不由線程來決定,當一個進程出現問題,系統可以殺掉這個進程。

  注意:并不是線程的優先級越高,線程就一定會優先執行,只是說優先級高的線程更可能被選擇到。

  Java線程狀態轉換

  貼一張圖,好好記:

Java高級程序員必備的內容知識

  線程安全的實現方法

  互斥同步,加鎖,悲觀方案,保證共享數據同一時刻只有一個線程訪問。,互斥是因,同步是果。

  非阻塞同步,CAS,樂觀方案,先進行操作,如果沒有其他線程也進行操作,那么就操作成功了,如果有其它線程也在操作共享數據,那么再重試。

  無同步方案,一般為純代碼,有一些特性,如不依賴堆上的公用系統資源

  鎖優化

  自旋鎖與自適應自旋

  假如共享數據只會持續很短的一段時間,為了這段時間進行掛起和恢復線程并不值得,這時我們可以讓后面請求鎖的線程稍等一下,讓線程進行一個忙循環(自旋),這就是所謂的自旋鎖。

  因為們有時不值得共享數據到底被鎖了多久,盲目的自旋可能導致性能的損失,JDK1.6之后,系統引入了自適應的自旋,及在一次共享數據被鎖定時,加入系統多次獲得自旋鎖,系統可以允許線程自旋的次數更多時間更久一些。如果多次沒有獲得自旋鎖,那么系統下次可能會省略掉自旋鎖。

  鎖消除

  對一些不可能存在共享數據競爭的鎖進行消除。

  鎖粗化

  有時候多個操作都對同一個對象加鎖,頻繁的加鎖也會影響性能,那么系統就把鎖的同步范圍進行擴展。如StringBuffer()的多個append操作。

  偏向鎖

  可以理解為偏袒鎖,鎖會偏向于第一個獲得它的線程,如果接下來的執行過程中,該鎖沒有被其他線程獲取,則持有偏向鎖的線程將永遠不在需要進行同步。

Java高級程序員必備的內容知識

       以上就是動力節點Java培訓機構小編介紹的“Java高級程序員必備的內容知識”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

       Java全套自學資料+視頻

       Java自學視頻教程(免費學習):http://www.ilovecolors.com.cn/video.html

  Java技術教程:http://www.ilovecolors.com.cn/tutorial/

  相關內容

  Java程序員如何做到Java架構師

  2019Java程序員技術面試總結

  Java多線程學習,深入解析

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 手机在线看片国产 | 欧美日韩精品国产一区在线 | 综合自拍亚洲综合图区美腿丝袜 | 午夜爱爱小视频 | 国内外成人免费在线视频 | 99国产成人高清在线视频 | 深夜男人影院 | 天天操天天操天天 | 91短视频黄 | 日韩成人在线观看视频 | 免费观看a级完整视频 | 免费一级特黄 | 成人羞羞视频在线观看免费 | 丝袜美腿综合 | 日日做夜夜做 | 美女一级毛片免费不卡视频 | 亚洲成人网页 | 日韩在线一 | 美女黄色好大美女黄色 | 曰批全过程免费动态图 | 黄色一级在线观看 | 欧美一级专区免费大片俄罗斯 | 日日噜噜噜夜夜爽爽狠狠69 | 一级毛片儿 | 日皮视频免费观看 | 国产高清freexxxx性 | 天天射天天草 | 国产欧美日韩视频怡春院 | 中文字幕亚洲一区 | 国产成在线观看免费视频 | 色中色在线视频 | 男人午夜禁片在线观看 | 免费激情网站 | 午夜国产福利在线观看 | 99热99热| 日韩在线网 | 亚洲成人一区在线 | 久久久久精彩视频 | 国产午夜在线视频 | 伊人天天躁夜夜躁狠狠 | 欧美日本韩国一区 |